JavaSE-Scanner和String
提示:以下是本篇文章正文内容,下面案例可供参考
一、Scanner
(1)作用:用于获取用户的键盘输入,用户用键盘录入自己的数据。
(2)形式:
Scanner sc = new Scanner(System.in);
其中sc是自己命名的
1.1 scanner 类的 nextXxx()方法:
1.Xxx的类型:
Xxx代表录入的各种数据的类型,可以有
nextInt()—代表录入整数
nextDouble()—代表录入小数
next()—代表录入字符串,如果字符串中包含空格,那么在遇到第一个空格之后的内容就不再录入了
nextLine()—代表录入字符串,即使字符串中有空格也不影响,可全部录入
注意:Xxx系列的首字母要大写
2.创建屏幕录入对象
举例:
public class Demo2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int i = sc.nextInt();
System.out.println("你输入的是"+i);
}
}
结果:
请输入一个整数
2
你输入的是2
3.当你先录入整数后,再录入字符串时(nextLine()) 会出现字符串录入不到,那么解决方法,可以重写创建一个Scanner对象
举例:
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int num = sc.nextInt();
System.out.println("请输入字符串");
sc=new Scanner(System.in);
String text = sc.nextLine();
System.out.println("你输入的内容是:"+text+"===="+num);
2. scanner的hasnextXxx()方法:
1.Xxx的类型:
同nextXxx()方法一样
2.hasnextXxx的特点:
可以判断我需要的类型是否和用户输入的类型一样
3.举例:
public class ScannerDemo2 {
public static void main(String[] args) {
System.out.println("请输入一个整数");
while (true){
Scanner sc = new Scanner(System.in); //每一次都创建一个新的对象
if (sc.hasNextInt()) {
int i = sc.nextInt();
System.out.println(i);
break;
} else {
System.out.println("你输入的类型不正确,请重新输入");
}
}
}
}
4.使用hasNextXxx()方法创建的对象的类型是Boolean,输出结果只有true和false
public class Demo3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean b = sc.hasNextInt();
System.out.println(b);
}
}
结果分析:输入int类型的数据结果为true,否则为false
二、String(字符串)
(1)概述:
字符串是由多个字符组成的一串数据(字符序列),字符串可以看成是字符数组。String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。
(2)特点:
字符串是常量,一旦被创建,就不能被改变。因为字符串的值是在方法区的常量池中划分空间 分配地址值的-*+
(3)string类的构造方法:
1.public String():空构造
2.public String(byte[] bytes):把字节数组转成字符串
3.public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串(index:表示的是从第几个索引开始, length表示的是长度)
4.public String(char[] value):把字符数组转成字符串
5.public String(char[] value,int index,int count):把字符数组的一部分转成字符串
6.public String(String original):把字符串常量值转成字符串
举例:
public class StringDemo2 {
public static void main(String[] args) {
//String 类中的构造方法
//String( byte[] bytes ) 把一个字节数组转成字符串
byte[] bytes={97,98,99,100};
String s = new String(bytes); //把字节数组转成字符串
System.out.println(s);
// String( byte[] bytes, int offset, int length) 把一个字节数组的一部分转换成字符串
byte[] bytes2 = {97, 98, 99, 100,101,102,103,104};
//从数组中的5索引开始,转3个
String s1 = new String(bytes2,5,3);
System.out.println(s1);
System.out.println("------------------------------");
// String( char[] value) 把一个字符数组转换成字符串
char[] chars={'a','b','d','你','好','吗'};
String s2 = new String(chars);
System.out.println(s2);
//String( char[] value, int offset, int count) 把字符数组的一部分转换成字符串
//从3索引处转3个字符
String s3 = new String(chars, 3, 3);
System.out.println(s3);
//字符串:有多个字符组成的字符序列
//字符串,也是有索引的,从0开始 "abcdef"
//获取字符串长度的方法 length()
String s4 = new String("abcdef");
int length = s4.length();
System.out.println(length);
}
}
(4)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): 从指定位置开始到指定位置结束截取字符串。