首页 > 解决方案 > 为什么 str2 打印“嗨”而不是“嗨伙计们”,有人可以解释堆栈、堆和池中发生了什么吗?

问题描述

为什么 str2 打印“嗨”而不是“嗨伙计们”?

有人可以解释堆栈、堆和池中发生了什么吗?

public static void main(String...args) {
    String str1 = "Hi";
    String str2 = str1;
    str1 +=" guys";
    System.out.println(str2);
}

标签: java

解决方案


String是不可变的。因此,您实际上是在为引用创建和分配一个新Stringstr1StringBuilder(可变类型)按预期工作。

StringBuilder str1 = new StringBuilder("Hi");
StringBuilder str2 = str1;
str1.append(" guys");
System.out.println(str2);

输出

Hi guys

推荐阅读