【发布时间】:2020-02-09 14:50:37
【问题描述】:
我正在阅读一些关于 Java 11 认证的书,这段代码真的引起了我的注意。
public class StringCreations {
public static void main(String[] args) {
String hello = "hello";/*A STRING CREATED HERE*/
for(int i=0;i<5;i++){
hello = hello + i;/*I THINK THAT A STRING IS CREATED IN EACH ITERATION.*/
}
System.out.println(hello);/*6 or 11 objects created at this time?? i think is 6*/
}
}
这本书说这个 sn-p 每次迭代创建了 11 个对象 2?这个对吗? 我认为每次迭代创建 1 个对象,总共创建 6 个对象。
【问题讨论】:
-
“书上说这个sn-p每次迭代创建了11个对象2个?” 11个objects还是11个strings?因为字符串连接是使用
StringBuilders... 实现的 -
查看字节码以了解实际情况
-
@HovercraftFullOfEels Java 11 中的字节码将只有一个
invokedynamic进行连接,它(按设计)隐藏了字符串连接实现方式的所有细节。