开发者社区> 问答> 正文

为什么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 351 0
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
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载