Java字符串折腾
Java字符串折腾
JDK 17
字符串常量池String Pool
存放位置:堆内
运行代码
public static void main(String[] args) {
String s1 = new String("1");
String s2 = "1";
System.out.println(s1 == s2);//
System.out.println("----S2-----");
String s3 = s1 + "1";//在堆中创建了一个新的对象,内存地址不同于String Pool中
String s4 = "1" + "1";
System.out.println(s3 == s4);
System.out.println("-----S4----");
String s5 = s3.intern();//这里取出的是String Pool中的内存地址
System.out.println(s5 == s3);
System.out.println(s5 == s4);
System.out.println("-----S5----");
String s6 = "1" + "1";
System.out.println(s3 == s6);
System.out.println(s4 == s6);
System.out.println(s5 == s6);
System.out.println("-----S6----");
String s7 = "11";
System.out.println(s3 == s7);
System.out.println(s4 == s7);
System.out.println(s5 == s7);
System.out.println(s6 == s7);
System.out.println("-----S7----");
String s8 = s7;
System.out.println(s3 == s8);
System.out.println(s4 == s8);
System.out.println(s5 == s8);
System.out.println(s6 == s8);
System.out.println(s7 == s8);
System.out.println("----S8-----");
String s9 = "1" + "1";
System.out.println(s3 == s9);
System.out.println(s4 == s9);
System.out.println(s5 == s9);
System.out.println("----S9-----");
String ss1 = new String("1") + new String("1");//在堆中创建了一个新的对象,内存地址不同于String Pool中
String ss2 = ss1.intern();
System.out.println(ss1 == ss2);// false
}
控制台输出
false
----S2-----
false
-----S4----
false
true
-----S5----
false
true
true
-----S6----
false
true
true
true
-----S7----
false
true
true
true
true
----S8-----
false
true
true
----S9-----
false
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 孤寂灬无痕
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果