小编Vai*_*nan的帖子

Java 字符串上 + 和 += 的区别

我想了解当我们在 Java 中对字符串使用 + 和 += 时如何分配内存。我知道字符串文字存储在字符串常量池中,在案例#1 中,s1 和 s2 都引用字符串常量池中的相同内存。

在案例#2 中,即使我使用了 + 运算符,它仍然引用字符串常量池中的同一个对象

我觉得有趣的是案例#3。在这种情况下如何以及在哪里分配内存?它与案例#2 有何不同

//Case #1
String s1 = "Hello Java";
String s2 = "Hello Java";
System.out.println(s1 == s2); //true

//Case #2
s1 = "Hello" + " Java";
s2 = "Hello Java";
System.out.println(s1 == s2); //true

s1 = "Hello";
s1 += " Java";
s2 = "Hello Java";
System.out.println(s1 == s2); //false
Run Code Online (Sandbox Code Playgroud)

java memory string heap-memory string-pool

3
推荐指数
1
解决办法
93
查看次数

标签 统计

heap-memory ×1

java ×1

memory ×1

string ×1

string-pool ×1