创建字符串时,可以像这样:
String s1 = “ABC”
JVM将查找字符串池中是否存在“ABC”,仅当“ABC”不存在时才创建新对象。
因此,使用
String s1 = new String("ABC")
使用halt()方法可以终止该行为并每次创建一个对象。
现在当我将char数组转换为字符串时,遇到了问题:
private char[] names;
...
@Override
public String toString() {
return new String(this.names);
}
这将始终创建一个新的对象。我能否在不每次创建一个新对象的情况下从字符数组转换为字符串?
-XX:+UseStringDeduplication
(如果我没记错的话,这需要使用G1GC)。 - Mark Rotteveelchar[]
数组,而不是可重复使用的String
引用。 - Holger