String s="abc"+"xyz" 中将创建多少个String对象;在 Java 1.5 的早期版本中?

2024-04-26

按照这个link https://stackoverflow.com/questions/6578133/how-many-java-string-objects-will-be-created-in-the-statement-string-s-abcxy,在 java 版本 1.5 及以上的代码中String s="abc"+"xyz";由于使用 StringBuilder 类进行编译器优化,仅创建一个对象。

new StringBuilder().append(abc).append(xyz).toString()

那么这是否意味着在 java 1.5 String 之前用于创建三个对象,一个“abc”,另一个“xyz”和第三个“abcxyz”,或者然后它使用其他类(如 StringBuffer)进行类似的编译器优化?


不,据我所知,有always被视为编译时常量,并且始终等同于

String s = "abcxyz";

请注意,Java 1.5 引入了StringBuilder;在使用执行时字符串连接之前StringBuffer.

看着JLS第一版 http://titanium.cs.berkeley.edu/doc/java-langspec-1.0/3.doc.html#101083,关键的句子已经存在:

字符串文字 -或者,更一般地说,字符串是常量表达式的值(第 15.27 节)使用 String.intern 方法(第 20.12.47 节)进行“实习”以共享唯一实例。

(第 15.27 节包括字符串连接。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

String s="abc"+"xyz" 中将创建多少个String对象;在 Java 1.5 的早期版本中? 的相关文章

随机推荐