使用+而向String添加新子字符串会产生新的String对象。 它是如何工作的,而我想用+初始化String:
String str = "Hello " + "world";
JVM"是否会照顾"它只会产生一个字符串,或者会创建两个字符串,它们将被添加到新的字符串中?我的意思是:
String str = new String("Hello") + new String("world");
String str = "Hello word";
以下哪些代码属实?
答案 0 :(得分:4)
Java管理这样的常量字符串:
常量表达式是一个表达式,表示......一个不会突然完成的字符串,仅使用以下内容组成:
原始类型的文字和String类型的文字
包含表达式为常量表达式的带括号的表达式。
引用常量变量的简单名称。
引用常量变量的
String.intern
形式的合格名称。String类型的常量表达式始终是" interned"以便使用
String.intern
方法共享唯一实例。
因为在使字符串为常量后调用-XX:+PrintStringTableStatistics JVM
,所以不应将其文字字符串组件添加到池中。
您可以尝试使用202
选项来确定程序终止时字符串池的大小。