String
2023.10.17
1.
public class Demo { public static void main(String args[]) { String str1 = new String("hello"); String str2 = new String("hello"); String str3 = "hello"; String str4 = "hello"; String str5 = "he"+"llo"; String str6 = "he"; String str7 = "llo"; System.out.println(str1==str2); System.out.println(str1==str3); System.out.println(str3==str4); System.out.println(str3=="hello"); System.out.println(str4==(str6+str7));
System.out.println(str5 == str3); } } 上面代码的输出结果是: false false true true false
true String str1 = new String("hello"); 这种方式创建的字符串,和正常创建对象一样,保存在堆区。 String str3 = "hello"; 这种方式创建的字符串,保存在字符串常量区。
最后一个str6拼接上str7相当于在方法区内又重新创建了一个hello常量与之前str4地址不相等所以会是false,此题中==比较的是放在栈中局部变量存储的地址
2.String split 这个方法默认返回一个数组, * 如果没有找到分隔符, * 会把整个字符串当成一个长度为1的字符串数组 * 返回到结果
2023.11.13
1.String解码编码
//先GBK解码,再UTF-8编码 String dst = new String(src,"GBK").getBytes("UTF-8")
2024.7.11
1.四种字符串对象放在常量池里的情况:
String a = "qwe"; String b = "qwe" + "asd"; final String c = new String("zxc"); final String d = new String("zxc"); String e = c + d; // 两个final常量拼接 String f = new String("rty").intern(); // 字符串对象intern得到的结果