开发者社区 问答 正文

为什么str2打印“ Hi”而不打印“ Hi Guys”,有人可以解释堆栈,堆和池中发生了什么吗?

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

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

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

问题来源:Stack Overflow

展开
收起
montos 2020-03-26 15:24:28 372 分享 版权
1 条回答
写回答
取消 提交回答
  • String是一成不变的。因此,您实际上是在创建新String的str1参考并将其分配给参考。StringBuilder(可变类型)可以按预期工作。

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

    产出

    Hi guys
    

    回答来源:Stack Overflow

    2020-03-26 15:24:53
    赞同 展开评论
问答地址: