String类的概念
截屏2022-04-25 13.26.56.png常量池的概念
截屏2022-04-25 13.30.39.png String s1 = "123";
String s2 = "123";
System.out.println(s1.hashCode()); // 48690
System.out.println(s2.hashCode()); // 48690
根据常量池的描述,我们可以看出常量值的哈希值是一样的,公用一个常量
String常用构造方法
截屏2022-04-25 14.06.03.png String s1 = new String();
String s2 = String.valueOf(0.3);
byte[] b1 = {97,98,99,100,101};
String s3 = new String(b1,1,3);
System.out.println(s3); // "bcd"
String s4 = new String(b1);
System.out.println(s4); // "abcde"
System.out.println("-------------------------");
char[] cArr = {'h','e','l','l','o','w'};
String s5 = new String(cArr);
System.out.println(s5); // hellow
String s6 = new String(cArr,1,3);
System.out.println(s6); // ell
//1.请问下面的代码会创建几个对象?分别存放在什么地方
String s1 = "hellow"; // 1个对象,存放在常量池
String s2 = new String("hellow"); // 2个对象,1个在常量池,1个在堆区
String str1 = "hellow"; // 常量池
String str2 = "hellwo"; // 常量池
String str3 = new String("hellow"); // 堆区
String str4 = new String("hellow"); // 堆区
System.out.println(str1 == str2); // 比较地址 true
System.out.println(str1.equals(str2)); // 比较内容 true
System.out.println(str3 == str4); // 比较地址 false
System.out.println(str3.equals(str4)); // 比较内容 true
System.out.println(str2 == str4); // 比较地址 false
System.out.println(str2.equals(str4)); // 比较内容 true
System.out.println("--------------------------");
String str5 = "abcd";
String str6 = "ab" + "cd"; // 常量优化机制
System.out.println(str5 == str6); // 比较地址 true
String str7 = "ab";
String str8 = str7 + "cd"; // str7不算常量,所以不能使用常量优化机制
System.out.println(str5 == str8); // false
String的常用成员方法
截屏2022-04-25 14.48.07.png String s1 = "HELLOW";
System.out.println(s1.toLowerCase(Locale.ROOT));
byte[] byArr = s1.getBytes(StandardCharsets.UTF_8);
for (int i = 0; i < byArr.length; i++) {
System.out.println(byArr[i]);
// 72 69 76 76 79 87
}
System.out.println("------------------");
char[] charArr = s1.toCharArray();
for (int i = 0; i < charArr.length; i++) {
System.out.println(charArr[i]);
// H E L L O W
}
String s2 = new String(charArr);
System.out.println(s2); // HELLOW
String s3 = new String(byArr);
System.out.println(s3); // HELLOW
char c1 = s2.charAt(3);
System.out.println(c1); // L
for (int i = 0; i < s2.length(); i++) {
System.out.println(s2.charAt(i)); // 打印每个字符 H E L L O W
}
截屏2022-04-25 15.33.48.png
String s1 = " hellow";
String s2 = s1.concat(" world "); // 拼接
System.out.println(s2);
if (s2.contains("w")) { // 是否包含
System.out.println("Contains");
}
s2 = s2.toUpperCase(Locale.ROOT); // 转大写
System.out.println(s2);
String s3 = s2.toLowerCase(Locale.ROOT); // 转小写
System.out.println(s3);
System.out.println(s3.trim()); // trim去掉左右两边的空白
小练习
判断输入的账号是否是admin,密码是否是123456,为登陆条件
for (int i = 0; i < 3; i++) {
// 1.提示用户从键盘输入用户名和密码信息并使用变量记录
System.out.println("请输入您的用户名和密码信息:");
Scanner sc = new Scanner(System.in);
String userName = sc.next();
String password = sc.next();
if (userName.equals("admin") && password.equals("123456")) {
System.out.println("登陆成功");
sc.close();
break;
} else {
System.out.println("用户名或密码错误");
if (i == 2){
System.out.println("账户冻结");
}else{
System.out.println("您还有 "+ (3-i-1) + "机会");
sc.close();
}
}
}
截屏2022-04-25 17.29.08.png
String str1 = "Good Good Study,Day Day Up!";
System.out.println(str1.indexOf('d')); // 查找第一个'd'所在的位置,-1代表失败
int index = str1.indexOf('d',2); // 从第二个位置开始查询'd'
System.out.println(index);
System.out.println(str1.indexOf("Day")); // 16
List list=new ArrayList();
boolean run = true;
int subIndex = 0;
while (run) {
if (str1.indexOf("Day",subIndex) == -1) {
run = false;
}else {
subIndex = str1.indexOf("Day",subIndex);
System.out.println(subIndex);
subIndex += 3;
list.add(subIndex);
}
}
System.out.println(list);
String类中子字符串的获取
截屏2022-04-25 17.35.32.png String test = "hellow world";
String test2 = test.substring(3,5);
System.out.println(test2); // lo
String test3 = test.substring(3);
System.out.println(test3); // low world
正则表达式
截屏2022-04-25 17.48.36.png截屏2022-04-25 22.42.05.png
截屏2022-04-25 22.43.50.png
判断银行卡密码规则
// 1.定义描述规则的正则表达式字符串
String reg = "^[0-9]{6}$";
// 2.提示用户从键盘输入指定的内容并使用变量记录
System.out.println("请输入您的银行卡密码:");
Scanner sc = new Scanner(System.in);
String str = sc.next();
// 3.判断用户输入的字符串内容是否满足指定的规则并打印
if (str.matches(reg)) {
System.out.println("银行卡密码的格式正确");
}else {
System.out.println("格式不正确");
}
QQ号码的规则
String reg1 = "^[1-9]\\d{4,14}";
System.out.println("请输入您的QQ号码:");
Scanner sc = new Scanner(System.in);
String str = sc.next();
// 3.判断用户输入的字符串内容是否满足指定的规则并打印
if (str.matches(reg1)) {
System.out.println("QQ号码的格式正确");
}else {
System.out.println("格式不正确");
}
手机号码的规则
String reg1 = "^1[34578]\\d{9}";
System.out.println("请输入您的手机号码:");
Scanner sc = new Scanner(System.in);
String str = sc.next();
// 3.判断用户输入的字符串内容是否满足指定的规则并打印
if (str.matches(reg1)) {
System.out.println("手机号码的格式正确");
}else {
System.out.println("格式不正确");
}
身份证号码规则
String reg1 = "(\\d{6})(\\d{4})(\\d{2})(\\d{2})(\\d{3})([0-9|X])";
System.out.println("请输入您的身份证号码:");
Scanner sc = new Scanner(System.in);
String str = sc.next();
// 3.判断用户输入的字符串内容是否满足指定的规则并打印
if (str.matches(reg1)) {
System.out.println("身份证号码的格式正确");
}else {
System.out.println("格式不正确");
}
截屏2022-04-25 23.33.59.png
String str1 = "1001,zhangfei,30";
String[] sArr = str1.split(",");
for (int i = 0; i < sArr.length; i++) {
System.out.println(sArr[i]);
}
String str2 = "abcdefgaaff";
str2 = str2.replace("a","h");
System.out.println(str2); // hbcdefghhff
String str6 = "123abc456def789ghi";
// 将第一个数字字符串替换为#
String str7 = str6.replaceFirst("\\d{1}","#");
System.out.println(str7);
// 将所有字母字符串替换为"$$$"
String str8 = str7.replaceAll("[a-z]{1}","A");
System.out.println(str8);
网友评论