day07-Scanner的常见对象
1 Scanner的概述和方法介绍
-
A:Scanner的概述
-
B:Scanner的构造方法原理
- Scanner(InputStream source)
- System类下有一个静态的字段:
- public static final InputStream in; 标准的输入流,对应着键盘录入。
-
C:一般方法
- hasNextXxx() 判断是否还有下一个输入项
- nextXxx() 获取下一个输入项。
2 Scanner获取数据出现的小问题以及解决方案
- 两个常用的方法:
- public int nextInt():获取一个int类型的值
- public String nextLine():获取一个String类型的值
import java.util.Scanner; //导入键盘录入的包
class DemoScanner0 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in); //创建一个键盘录入对象sc
System.out.println("请输入一个整数");
int intcode=sc.nextInt(); //intcode获取整数值
System.out.println(intcode);
//Scanner sc0=new Scanner(System.in);//重新创建一个键盘录入对象便可以解决,创建后记得以下使用的新对象名
System.out.println("请输入一个字符串");
String stringcode=sc.nextLine(); //stringcode获取字符串
System.out.println(stringcode);
}
}
/*
请输入一个整数
10
运行结果:
10
请输入一个字符串
*/
/*
结果分析:
在输入整数10的时候,系统会默认输入换行符进行换行,而字符串判断输入结束的标志就是换行符,在检测到输入整数的换行符后,便直接运行结束。
问题解决方案
* 第一种:先获取一个数值后,在创建一个新的键盘录入对象获取字符串。
* 第二种:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。
*/
复制代码
3 常见String类的构造方法
class DemoString1 {
public static void main(String[] args) {
String s0=new String(); //创建一个名为s0的String方法
System.out.println(s0); //打印空参构造
byte[] arr1={97,98,99}; //其对应的ASCII值为abc
String s1=new String(arr1);//把字节数组转成字符串。
//String(byte[] bytes)
System.out.println(s1); //打印转换的字符串
byte[] arr2={97,98,99,100,101};
String s2=new String(arr2,1,3);//把字节数组转成字符串,限制开始位置以及转换长度。
//String(byte[] bytes,int index,int length)
System.out.println(s2);
char[] arr3={'a','b','c','d','e'};
String s3=new String(arr3);//把字符数组转成字符串,限制开始位置以及转换长度。
//String(char[] value)
System.out.println(s3);
char[] arr4={'a','b','c','d','e'};
String s4=new String(arr4,2,2);//把字符数组转成字符串,限制开始位置以及转换长度。
//String(char[] value,int index,int count)
System.out.println(s4);
String s5=new String("abcde");//把字符串常量转成字符串。
//String(String original)
System.out.println(s5);
}
}
/*
运行结果:
abc
bcd
abcde
cd
abcde
*/
复制代码
4 常见String类的判断功能
class DemoString2 {
public static void main(String[] args) {
String s1="abcde";
String s2="abcde";
String s3="ABCDE";
String s4="bc";
String s5="ab";
String s6="de";
String s7="";
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3)); //equals区分大小写
System.out.println(s1.equalsIgnoreCase(s3));//equalsIgnoreCase不区分大小写
System.out.println(s1.contains(s4)); //判断大字符串里是否包含小字符串,包含为true,不包含为flase
System.out.println(s1.startsWith(s5)); //判断字符串是否以某个指定的字符串开头
System.out.println(s1.endsWith(s6)); //判断字符串是否以某个指定的字符串结尾
System.out.println(s7.isEmpty()); //判断字符串是否为空.
/*
这里的空即不是指空格,也不是null,而是""里什么都不输入。
如果输入的是空格键,则运行结果为flase,如果是null。则报错
*/
}
}
/*
运行结果:
true
false
true
true
true
true
true
*/
复制代码
5 常见String类的获取功能
class DemoString3 {
public static void main(String[] args) {
String s0="ab.cd?eacdfabd";
System.out.println(s0.length()); //获取字符串的长度,为每个字符的个数(不是字节)
System.out.println(s0.charAt(3)); //获取索引的位置
System.out.println(s0.indexOf('c')); //根据字符找第一次出现的位置
System.out.println(s0.indexOf("cd")); //根据字符串找第一次出现的位置
System.out.println(s0.indexOf('c',4)); //根据字符找第一次出现的位置,从指定位置开始找
System.out.println(s0.indexOf("cd",4)); //根据字符串找第一次出现的位置,从指定位置开始找
System.out.println(s0.lastIndexOf('a')); //从后向前找,用法和indexOf一样,参考indexOf使用
System.out.println(s0.lastIndexOf("cd"));
System.out.println(s0.lastIndexOf('c',4));
System.out.println(s0.lastIndexOf("cd",4));
String s1=s0.substring(3); //从3处开始截取,把3之前的截去
System.out.println(s1);
String s2=s0.substring(3,8); //把3之前的截去,截取部分不包括3
System.out.println(s2); //把3之前和包括8之后的截去,截取部分补包括3,但包括8
}
}
/*
运行结果:
14
c
3
3
8
8
11
8
3
3
cd?eacdfabd
cd?ea
*/
复制代码
6 常见String类的转换功能
class DemoString4 {
public static void main(String[] args) {
String s0="abcde王";
byte[] arr0=s0.getBytes(); //把字符串转换为字节数组,以gbk码的方式转化
for(int i=0;i<arr0.length;i++){ //将转换的数组遍历出来
System.out.print(arr0[i] +" ");
}
System.out.println(); //输出换行符
char[] arr1=s0.toCharArray(); //把字符串转换为字符数组
for(int i=0;i<arr1.length;i++){ //将转换的数组遍历出来
System.out.print(arr1[i] +" ");
}
System.out.println(); //输出换行符
char[] arr2={'a','b','c'}; //字符数组
String s1=String.valueOf(arr2); //把整数数组转成字符串。
System.out.println(s1);
int[] arr3={97,98,99}; //整数数组
String s2=String.valueOf(arr3); //把字符数组转成字符串。
System.out.println(s2); //toString
String s3="ABCDE"; //将字符串转换成小写
System.out.println(s3.toLowerCase());
String s4="abcde"; //将字符串转换成大写
System.out.println(s4.toUpperCase());
String s5="abc";
String s6="def";
System.out.println(s5.concat(s6)); //字符串拼接
}
}
/*
运行结果:
97 98 99 100 101 -25 -114 -117
a b c d e 王
abc
[I@15db9742
abcde
ABCDE
abcdef
*/
复制代码
7 String的其它功能
class DemoString5 {
public static void main(String[] args) {
String s0="abcde";
String s1=s0.replace('b','o'); //用o替换掉b
System.out.println(s1);
String s2=s0.replace('g','o'); //用o替换掉g,但原来的字符串中没有g,所以不会被替换。
System.out.println(s2);
String s3=s0.replace("bc","op"); //用op替换掉bc
System.out.println(s3);
String s4=s0.replace("bf","op"); //用op替换掉bc,但原来的字符串虽然有b,但此处应当把bf看成整体,所以不会被替换。
System.out.println(s4);
String s5=s0.replace("bd","op"); //只能替换连着写的字符串
System.out.println(s5);
String s6=" ab cde f ";
System.out.print(s6.trim()); //去掉头部和尾部的空格
System.out.println("验证空格是否去掉");
}
}
/*
运行结果:
aocde
abcde
aopde
abcde
abcde
ab cde f验证空格是否去掉
*/
复制代码