根据此链接,在代码中的Java 1.5版本中,String s="abc"+"xyz"; 由于使用StringBuilder类进行编译器优化,因此只创建了一个对象.
new StringBuilder().append(abc).append(xyz).toString()
Run Code Online (Sandbox Code Playgroud)
那么这意味着在java 1.5 String之前用于创建三个对象一个"abc",另一个"xyz"和第三个"abcxyz"OR然后它使用其他类如StringBuffer进行类似的编译器优化?
不,据我所知,它一直被视为编译时常量,并且一直相当于
String s = "abcxyz";
Run Code Online (Sandbox Code Playgroud)
注意Java 1.5的介绍StringBuilder; 在使用执行时字符串连接之前StringBuffer.
看一下JLS的第一版,已经存在关键句子:
字符串文字 - 或者更一般地说,作为常量表达式(第15.27节)值的字符串是"实例化",以便使用String.intern(第20.12.47节)方法共享唯一实例.
(第15.27节包括字符串连接.)
| 归档时间: |
|
| 查看次数: |
606 次 |
| 最近记录: |