1: Scanner注意事项
存在的问题:当录入数据依次是int String,并且分别使用nextInt()和next()方法获取数据的时候,会接受不到String数据。
解决办法:
1). 在录入完int后重新创建一个新的Scanner对象
2). 用字符串接受,然后把字符串转成int类型
2:数据结构思想:拿时间换空间,拿空间换时间
例子:需求:一个网站有一个功能,当你填入你的年龄的时候,我就能自动判断你是哪个年龄段
0-9岁,儿童
10-19岁,少年
20-29岁,青年
30-39岁,壮年
40-49岁,中年
50-59岁,中老年
60岁以上,老年
代码实现例子:
String[] ages = {"儿童","少年","青年","中年","中老年","老年"};
System.out.println(ages[age/10]);
2:String类(掌握)
键盘录入:int————int可以;
string————string可以
string————int可以;
但是int——string 不行;因为把回车换行符给了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 类型的。
int compareTo(String str):按字典顺序(Unicode编码顺序)
如果第一个相同比较第二个,依次类推
int compareToIgnoreCase(String str) :按字典顺序(Unicode编码顺序)
如果第一个相同比较第二个,依次类推,不区分大小写
(5)案例:(理解--明天写一遍)
A:模拟用户登录 (用到了 判断equals 功能,如果有的用户名不区分大小写 还可以用equalsIgnorCase)
String username = "admin";
String password = "admin";
// 三次机会
for (int x = 0; x < 3; x++) {
// x 0,1,2
// 键盘录入数据:用户名和密码。
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = sc.nextLine();
System.out.println("请输入密码:");
String pwd = sc.nextLine();
// 把数据进行比较。
if (username.equals(name) && password.equals(pwd)) {
System.out.println("恭喜你,登录成功");
// 引入曾经的猜数字小游戏。
break;
} else {
if ((2 - x) == 0) {
System.out.println("账号被锁定,请与林青霞联系");
} else {
// 2,1,0
System.out.println("登录失败,你还有" + (2 - x) + "次机会");
}
}
}
B:字符串遍历 (用到了 charAt 功能)
for (int x = 0; x < s.length(); x++) {
char ch = s.charAt(x);
System.out.println(ch);
}
C:统计字符串中大写,小写,数字字符出现的次数 (用到了 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++;
}
}
D:把字符串的首字母大写,其他小写(用到了 截取 、 连接 、 转大小写 功能)
String str2 = str.substring(0,1).toUpperCase().concat(str.substring(1).toLowerCase());
E:大串中小串出现的次数(用到了 截取 、 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;
}
F:学习indexOf过程中,我们发现contains()的底层就是用的indexOf()
public boolean contains(CharSequence s) {
return indexOf(s.toString()) > -1;
}
|