【发布时间】:2010-11-14 11:19:26
【问题描述】:
这个问题主要是出于好奇(并消磨了一些时间)。为了具体起见,我专门询问 Java。
如果我将一个字符串(任何字符串)与一个空字符串连接起来,在内存中会发生什么,例如:
String s = "any old string";
s += "";
我知道之后,s 的内容仍然是“任何旧字符串”,因为空的 ASCII 字符串作为 ASCII 空值存储在内存中(因为至少在 Java 中,字符串总是以空值结尾) .但是我很想知道 Java(编译器?VM?)是否执行了足够的优化以知道 s 将保持不变,并且它可以完全忽略字节码中的该指令,或者在编译和运行时是否发生了不同的事情。
【问题讨论】:
标签: java string optimization