java - 为什么 str2 打印“嗨”而不是“嗨伙计们”,有人可以解释堆栈、堆和池中发生了什么吗?
问题描述
为什么 str2 打印“嗨”而不是“嗨伙计们”?
有人可以解释堆栈、堆和池中发生了什么吗?
public static void main(String...args) {
String str1 = "Hi";
String str2 = str1;
str1 +=" guys";
System.out.println(str2);
}
解决方案
String
是不可变的。因此,您实际上是在为引用创建和分配一个新String
的str1
。StringBuilder
(可变类型)按预期工作。
StringBuilder str1 = new StringBuilder("Hi");
StringBuilder str2 = str1;
str1.append(" guys");
System.out.println(str2);
输出
Hi guys
推荐阅读
- reactjs - WebSocket SocketIO 连接不适用于 Heroku 上的 NestJS 服务器并在 Vercel 上响应客户端
- mysql - phpMyAdmin 在插入第一个表时执行触发器时在第二个表中存储一个随机数
- azure - 在创建事件订阅之前从 ARM 部署函数
- python - 我如何使用 python 和 beautifulsoup 进行网页抓取?
- c++ - 使用 hashmap 打印第一个重复元素;
- paypal - 除非结帐成功,否则阻止网页访问
- android - 如何使用底部导航视图从片段中调用片段 - Kotlin
- java - 在 Hibernate 中使用 MySQL 模拟延迟约束
- php - 如何使用 REGEXP-LIKE 动态搜索 MySQL 数据库?
- python - 如何使用 jmeter 在 celery 中加载测试异步 python 请求?