JAVA中的Scannr类,以及String类

本文详细介绍了JAVA中的Scanner类,包括构造方法、hasNextXxx()和nextXxx()方法的使用以及常见问题的解决方案。同时,文章还深入探讨了String类,包括其构造方法、判断功能、获取功能、转换功能以及其他实用方法,如数组转字符串和字符串查找等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Scanner的概述和构造方法原理

Scanner的概述:
JDK5以后用于获取用户的键盘输入
B:Scanner的构造方法原理
Scanner(InputStream source)
System类下有一个静态的字段:
public static final InputStream in; 标准的输入流,对应着键盘录入。

Scanner类的hasNextXxx()和nextXxx()方法的讲解

基本格式
hasNextXxx() : 判断下一个是否是某种类型的元素,其中Xxx可以是Int,Double等。
如果需要判断是否包含下一个字符串,则可以省略Xxx
nextXxx() : 获取下一个输入项。Xxx的含义和上个方法中的Xxx相同

public class Test9 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个整数");
        System.out.println(scanner.hasNextInt());

    }
}

Scanner获取数据出现的小问题及解决方案

两个常用的方法:
public int nextInt():获取一个int类型的值
public String nextLine():获取一个String类型的值
public String next():获取一个String类型的值
当我们在录入一个int值,多个string值的时候,会出现没录入就结束的情况,其实这种情况是已经录入了回车,但是我们没发现。
解决方法:
先获取一个数值后,在创建一个新的键盘录入对象获取字符串

String类的概述

什么是字符串
字符串是由多个字符组成的一串数据(字符序列)
字符串可以看成是字符数组
String类的概述
通过JDK提供的API,查看String类的说明
可以看到这样的两句话:
a:字符串字面值"abc"也可以看成是一个字符串对象。
b:字符串是常量,一旦被创建,就不能被改变。

String类的构造方法

常见构造方法
public String():空构造
public String(byte[] bytes):把字节数组转成字符串
public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串(index:表示的是从第几个索引开始, length表示的是长度)
public String(char[] value):把字符数组转成字符串
public String(char[] value,int index,int count):把字符数组的一部分转成字符串
public String(String original):把字符串常量值转成字符串

特点:
一旦被创建就不能改变 因为字符串的值是在方法区的常量池中划分空间 分配地址值的

看程序写结果

	String s1 = new String("hello");
	String s2 = new String("hello");
	System.out.println(s1 == s2);
	System.out.println(s1.equals(s2));

	String s3 = new String("hello");
	String s4 = "hello";
	System.out.println(s3 == s4);
	System.out.println(s3.equals(s4));

	String s5 = "hello";
	String s6 = "hello";
	System.out.println(s5 == s6);
	System.out.println(s5.equals(s6));

结果为:
false
true
false
true
true
true
为什么呢,new的时候在堆内存,他们指向的地址不同,所以为false,但是equals方法经过重写,他比较的是两个字符串的内容,显然都是hello,所以为true ,当直接String =xxx是,这是一个常量,存放在方法区的常量池中,当第二个继续赋值时,常量池中已经有了hello,他还是指向这个hello,所以最后两个都为true

String类的判断功能

public boolean equals(Object obj): 比较字符串的内容是否相同,区分大小写
public boolean equalsIgnoreCase(String str): 比较字符串的内容是否相同,忽略大小写
public boolean contains(String str): 判断字符串中是否包含传递进来的字符串
public boolean startsWith(String str): 判断字符串是否以传递进来的字符串开头
public boolean endsWith(String str): 判断字符串是否以传递进来的字符串结尾
public boolean isEmpty(): 判断字符串的内容是否为空串""

String类的获取功能

String类的获取功能
public int length(): 获取字符串的长度。
public char charAt(int index): 获取指定索引位置的字符
public int indexOf(int ch): 返回指定字符在此字符串中第一次出现处的索引。
public int indexOf(String str): 返回指定字符串在此字符串中第一次出现处的索引。
public int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
public int indexOf(String str,int fromIndex): 返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
可以顺带提一下lastIndexOf系列
public String substring(int start): 从指定位置开始截取字符串,默认到末尾。
public String substring(int start,int end): 从指定位置开始到指定位置结束截取字符串。


public class Test9 {
    public static void main(String[] args) {
      String s1 ="我爱学习JAVA";
        System.out.println("该字符串的长度是"+s1.length());
        System.out.println("该字符串第3个索引处的字符是:"+s1.charAt(3));
        System.out.println("该字符串中JAVA首次出现的索引是:"+s1.indexOf("JAVA"));
        System.out.println("从索引2处截取字符串后为:"+s1.substring(2));

    }
}

在这里插入图片描述

字符串的遍历

实例:
给一个字符串,倒序打印

public class Test7 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str =scanner.nextLine();
        String str2 ="";
        for (int i = str.length()-1; i >=0; i--) {
            char c =str.charAt(i);
            str2+=c;

        }
        System.out.println("该字符串倒过来是:"+str2);
    }
}

解析:使用charAt方法,然后用循环打印每一个索引对应的字符,然后凑成一字符串

String类的转换功能

String的转换功能:
public byte[] getBytes(): 把字符串转换为字节数组。
public char[] toCharArray(): 把字符串转换为字符数组。
public static String valueOf(char[] chs): 把字符数组转成字符串。
public static String valueOf(int i): 把int类型的数据转成字符串。
注意 :String类的valueOf方法可以把任意类型的数据转成字符串。
public String toLowerCase(): 把字符串转成小写。
public String toUpperCase(): 把字符串转成大写。
public String concat(String str): 把字符串拼接。
实例:把一个字符串的首字母转成大写,其余为小写

public class Test9 {
    public static void main(String[] args) {
      String s ="ssdASDsdaSDASsdaASADsds";
        System.out.println((s.substring(0,1).toUpperCase()).concat(s.substring(1,s.length()).toLowerCase()));
    }
}

在这里插入图片描述

String类的其他功能

String的替换功能及案例演示
public String replace(char old,char new) 将指定字符进行互换
public String replace(String old,String new) 将指定字符串进行互换

public class Test9 {
    public static void main(String[] args) {
      String s ="我爱学习";
        System.out.println(s.replace("爱", "恨"));

    }
}

在这里插入图片描述
String的去除字符串两空格及案例演示
public String trim() : 去除两端空格

public class Test9 {
    public static void main(String[] args) {
      String s ="    我爱学习    ";
        System.out.println(s);
        System.out.println(s.length());
        System.out.println(s.trim());
        System.out.println(s.trim().length());

    }
}

在这里插入图片描述

把数组转成字符串

案例演示
需求:把数组中的数据按照指定个格式拼接成一个字符串
举例:
int[] arr = {1,2,3};
拼接结果:
“[1, 2, 3]”

public class Test9 {
    public static void main(String[] args) {
        int arr[]={1,2,3};
        String s="[";
        for (int i = 0; i < arr.length; i++) {
            if (i==arr.length-1){
                s+=arr[i]+"]";
            }else {
                s+=arr[i]+",";
            }

        }
        System.out.println(s);

    }
}

在大串中查找小串出现的次数代码实现

统计键盘录入的字符串中出现了几次字符串”java”
方法一:

public class Test9 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str =scanner.nextLine();
        int index = str.indexOf("java");
        int count =0;
        while (index!=-1){
           count++;
           str=str.substring(index+4);
           index=str.indexOf("java");
      }
        System.out.println(count);

    }
}

方法二:用一个字符替换要查找的字符

public class Test9 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str =scanner.nextLine();
        String str1=str.replace("java","X");
        int count =0;
        for (int i = 0; i < str1.length(); i++) {
            char c =str1.charAt(i);
            if (c=='X'){
                count++;
            }

        }
        System.out.println(count);
    }
}


总结:主要学习了JAVA常见类中经常使用的一些方法,方法种类很多,但是很重要,需要多多上手练习才能掌握。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值