当我们使用时:
String s = new String("abc");
制作String
对象。
s
将存储在堆栈中并将引用新对象,并且将在堆中创建新对象,而文字将位于字符串常量池中。
现在问题是新对象的价值是什么,它将引用" abc"在字符串池常量或它将携带" abc"作为价值?
答案 0 :(得分:1)
我们可以查看String
constructor:
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
请注意,原始字符串的value
未被复制,因此新创建的字符串和"abc"
都将引用相同的基础字符数组。