public class Demo9 {
public static void main(String[] args) {
// 以这种方式获取赋值的字符串直接在字符串常量池中找,找不到在字符串常量池中创建
// s1的地址指向字符串常量池
String s1 = "abc";
// 通过new方式创建的字符串对象在堆中
// s2的地址指向堆
String s2 = new String("abc");
System.out.println(s1 == s2); // false
// s2.intern()从字符串常量池中取字符串,取到则返回,取不到则创建,而s2指向在堆中,故不相等
System.out.println(s2 == s2.intern()); // false
// s2.intern即从字符串常量中取“abc”,取到的即为s1,故两者相等
System.out.println(s1 == s2.intern());
}
}
关于java中new String()和intern()方法的一些理解
最新推荐文章于 2022-11-19 02:08:28 发布