Scanner常见类
用于获取用户的键盘录入
Scanner的构造方法原理
System类下有一个静态的字段:
public static final InputStream in; 标准的输入流,对应着键盘录入。
Scanner类中的两个常用方法:
hasNestXxx()和nextXxx()
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean b = scanner.hasNextInt();//判断下一个输出的是否为整型
System.out.println(b);
int i = scanner.nextInt();//输入一个整数
}
Scanner获取中有个小问题
常见的一般的获取数据的方法是这样的
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
int i1 = scanner.nextInt();
String s = scanner.nextLine();
System.out.println(i);
System.out.println(i1);
System.out.println(s);//这种情况你就输入不进去String类型的值直接就跳过如何解决呢?
//第一种:先获取一个数值,在创建一个新的键盘录入对象获取字符串
Scanner scanner1 = new Scanner(System.in);
String s1 = scanner1.nextLine();
System.out.println(s1);
//第二种:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换成什么
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
Integer integer = Integer.valueOf(s);
System.out.println(integer+1);//输出检验了下是否为int类型,其中integer是int的包装类
}
String类
String也就是一个字符串,
1.符串字面值“ABC"也可以看做是一个字符串对象。
2.符串是常量,一旦被创建,就不能被改变,因为字符串的值是在方法区的常量池中划分的,分配地址值的
String类中的构造方法
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有一些判断功能
equals比较字符串的内容是否相等,区分大小写
equalsIgnoreCase比较字符串的内容是否相同,不区分大小写
cotains判断字符串中是否有传递进来的字符串
startsWith判断字符串中是否以传递进来的字符串为开头
endWith判断字符串中是否以传递进来的字符串为结尾
isEmpty判断字符串是否为空串
当然,字符串中有很多的方法,
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) | 返回指定字符串在此字符串中从指定位置后第一次出现处的索引。 |
public String substring(int start) | 从指定位置开始截取字符串,默认到末尾。 |
public String substring(int start,int end) | 从指定位置开始到指定位置结束截取字符串。 |
我们接下来遍历一个字符串
public static void main(String[] args) {
String string = "abcdefghijk";
for (int i = 0; i < string.length(); i++) {
char c = string.charAt(i);//获取指定i索引处的字符
System.out.println(c);
}
}
//这样就遍历好了这个"abcdefghijk"字符串
String的转换功能:
public byte[] getBytes() | 把字符串转换为字节数组。 |
public char[] toCharArray() | 把字符串转换为字符数组。 |
public static String valueOf(char[] chs) | 把字符数组转成字符串。 |
public static String valueOf(int i) | 把int类型的数据转成字符串。 |
public String toLowerCase() | 把字符串转成小写。 |
public String toUpperCase() | 把字符串转成大写。 |
public String concat(String str) | 把字符串拼接。 |
注意:String类的valueOf方法可以把任意类型的数据转成字符串。
接下来我们写一个题
需求:把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
public static void main(String[] args) {
String string = "abcdesefsefSEFSEFSEFk";
//首先获取出第一个字符串
String substring = string.substring(0, 1);
//转换为大写
String s = substring.toUpperCase();
//获取剩余的字符串
String substring1 = string.substring(1, string.length());
//转换为小写
String s1 = substring1.toLowerCase();
System.out.println(s.concat(s1));
//最后输出的结果就是Abcdesefsefsefsefsefk
}
字符串还有一些其他功能
比如说
replace(old,new)将指定字符或者字符进行交换
trim()去除两端空格
public int compareTo(String str) 返回的是按照字典顺序比较两个字符。会对照ASCII 码表 从第一个字母进行减法运算,返回的是减法的结果
接下来我们再写最后一个
需求:把数组中的数据按照指定个格式拼接成一个字符串
举例:
int[] arr = {1,2,3};
拼接结果:
"[1, 2, 3]"
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=s+arr[i]+"]";
}
else {
s=s+arr[i]+",";
}
}
System.out.println(s);
}