1: Scanner注意事项(了解)
存在的问题:当录入数据依次是int String,并且分别使用nextInt()和nextLine()方法获取数据的时候,会接受不到String数据。
解决办法:
1). 在录入完int后重新创建一个新的Scanner对象
2). 用字符串接受,然后把字符串转成int类型
2:String类(掌握)
(1)字符串:多个字符组成的一串数据。
(2)构造方法:
A:String s = new String();
B:String s = new String(byte[] bys);
C:String s = new String(byte[] bys,int index,int length);
D:String s = new String(char[] chs);
E:String s = new String(char[] chs,int index,int length);
F:String s = new String(String str);
G:String s = "hello";
(3)字符串的特点及面试题
A:字符串一旦被赋值,就不能改变。
注意:字符串的值不能改变,没有说引用变量不能改变。
B:面试题:
a:String s = new String("hello")和String s = "hello"的区别。
b:请写出结果:
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1==s2);//false
System.out.println(s1.equals(s2));//true
String s3 = new String("hello");
String s4 = "hello";
System.out.println(s3==s4);//false
System.out.println(s3.equals(s4));//true
String s5 = "hello";
String s6 = "hello";
System.out.println(s5==s6);//true
System.out.println(s5.equals(s6));//true
(4)成员方法
A:判断功能
boolean equals(Object obj):判断字符串的内容是否相同,区分大小写。
boolean equalsIgnoreCase(String str):判断字符串的内容是否相同,不区分大小写。
boolean contains(String str):判断字符串对象是否包含给定的字符串。
boolean startsWith(String str):判断字符串对象是否以给定的字符串开始。
boolean endsWith(String str):判断字符串对象是否以给定的字符串结束。
boolean isEmpty():判断字符串对象是否为空。数据是否为空。
B:获取功能
int length():获取字符串的长度
char charAt(int index):返回字符串中给定索引处的字符
int indexOf(int ch):返回指定字符在此字符串中第一次出现的索引
int indexOf(String str):返回指定字符串在此字符串中第一次出现的索引
int indexOf(int ch,int fromIndex):返回在此字符串中第一次出现指定字符的索引,从指定的索引开始搜索。
int indexOf(String str,int fromIndex):返回在此字符串中第一次出现指定字符串的索引,从指定的索引开始搜索。
String substring(int start):截取字符串。返回从指定位置开始截取后的字符串。
String substring(int start,int end):截取字符串。返回从指定位置开始到指定位置结束截取后的字符串。
C:转换功能
byte[] getBytes():把字符串转换成字节数组。
char[] toCharArray():把字符串转换成字符数组。
static String copyValueOf(char[] chs):把字符数组转换成字符串
static String valueOf(char[] chs):把字符数组转换成字符串。
static String valueOf(int i):基本类型:把int(基本类型)转换成字符串。
String toLowerCase():把字符串变成小写
String toUpperCase():把字符串变成大写
String concat(String str):拼接字符串。
D:其他功能
a:替换功能
String replace(char oldChar,char newChar):用新的字符去替换指定的旧字符
String replace(String oldString,String newString):用新的字符串去替换指定的旧字符串
b:切割功能
String[] split(String regex):按照规定的格式切割字符串成字符串数组
c:去除两端空格功能
String trim():去除字符串两端空格
d:字典顺序比较功能 (了解)
int compareTo(String str):按字典顺序(Unicode编码顺序),如果第一个相同比较第二个,依次类推
int compareToIgnoreCase(String str) :按字典顺序(Unicode编码顺序),如果第一个相同比较第二个,依次类推,不区分大小写
(5)案例:(理解--明天写一遍)
A:模拟用户登录 (用到了 判断equals 功能,如果有的用户名不区分大小写 还可以用equalsIgnorCase)
A1. 创建用户对象,并给定用户名和密码
for(int i=0; i<3; i++){
A2. 接收键盘录入的用户名和密码
A3. 调用User对象的isLogin方法判断用户名和密码是否正确
正确:提示"登陆成功"并跳出for循环
错误:提示"账号输入错误":
还剩0次机会:提示"您的账号已被锁定"
还剩>0次机会:提示"请联系管理员"
}
B:统计字符串中大写,小写,数字字符出现的次数 (用到了 charAt 功能)
String s = "Hello12345World";
// 定义三个统计变量
int bigCount = 0;
int smallCount = 0;
int numberCount = 0;
// 遍历字符串。
for (int x = 0; x < s.length(); x++) {
char ch = s.charAt(x);
// 判断是属于哪种范围
if (ch >= 'A' && ch <= 'Z') {
bigCount++;
} else if (ch >= 'a' && ch <= 'z') {
smallCount++;
} else if (ch >= '0' && ch <= '9') {
numberCount++;
}
}
C:把字符串的首字母大写,其他小写(用到了 截取 、 连接 、 转大小写 功能)
String str2 = str.substring(0,1).toUpperCase().concat(str.substring(1).toLowerCase());
D:大串中小串出现的次数(用到了 截取 、 indexOf 功能,)
public int getCount(String maxString, String minString) {
// 定义统计变量
int count = 0;
// 在大串中查找小串一次
int index = 0;
// 如果返回值不是-1,说明小串在大串中是存在的。
// 判断
while ((index = maxString.indexOf(minString)) != -1) {
// 统计变量++
count++;
// 把查找过的数据给截取掉,重新赋值给大串
maxString = maxString.substring(index + minString.length());
}
return count;
}
E:学习indexOf过程中,我们发现contains()的底层就是用的indexOf()
public boolean contains(CharSequence s) {
return indexOf(s.toString()) > -1;
}
|
|