【发布时间】:2017-02-14 10:06:17
【问题描述】:
有以下代码:
String s="JAVA";
for(i=0; i<=100; i++)
s=s+"JVM";
创建了多少个字符串?我的猜测是创建了 103 个字符串:
1:字符串池中的字符串“JAVA”
1:字符串“JVM”也在字符串池中
101:每次循环都会创建新的Strings,因为String是一个不可变的类
【问题讨论】:
-
jit 可能会尝试用字符数组列表替换它,直到 s 被引用为 used
-
@huseyintugrulbuyukisik - 1) AFAIK,它不会......到目前为止的 Java 版本中。 2) 根据对 JLS 15.18.1 的严格阅读,JIT 编译器是不允许这样做的。
标签: java string memory string-pool