You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中这段代码会创建多少个String对象?

Java字符串对象创建数量分析

先看这段代码:

String a="hello";
String b=a+"Bye";

问题:这段代码会创建多少个String对象?

你提到的两种情况里,正确的是会创建3个String对象,具体如下:

  • 常量池中的"hello":类加载阶段,字符串字面量"hello"会被放入字符串常量池(如果池中原本没有的话)。
  • 常量池中的"Bye":同理,字面量"Bye"也会在类加载阶段进入常量池(如果池中原本没有)。
  • 堆内存中的"helloBye":执行a+"Bye"时,编译器会将其转换为new StringBuilder(a).append("Bye").toString(),而toString()方法会在堆中生成一个新的"helloBye"字符串对象,这个对象不会自动进入字符串常量池。

关于append方法的疑问:

append方法不会将被追加的字符串放入常量池。"Bye"之所以在常量池,是因为它是字符串字面量,在类加载阶段就已经被加载到常量池里了,和append方法本身无关。

内容的提问来源于stack exchange,提问作者Joshua Samuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 03:51:34