大家不妨先看下这段代码 判断一下输出
String str1 = "abc";
String str2 = new String("abc");
String str3 = "abc";
System.out.println(str1 == str2);
System.out.println(str1 == str3);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
答案就是 false true 即说明str1的位置与str3的位置形同,str2的位置与它们不同,它们的内存图如图

本文探讨了Java中String对象的内存分配和比较。通过示例代码展示了`String str1=abc;`、`String str2=new String(abc);`和`String str3=abc;`之间的区别。重点讲解了常量池和堆内存的概念,解释了为什么`str1==str3`为真而`str1==str2`为假。
2263

被折叠的 条评论
为什么被折叠?



