创建时新对象中存储的值是多少?

时间:2017-06-16 18:00:51

标签: java string object memory memory-leaks

当我们使用时:

String s = new String("abc");

制作String对象。

s将存储在堆栈中并将引用新对象,并且将在堆中创建新对象,而文字将位于字符串常量池中。

现在问题是新对象的价值是什么,它将引用" abc"在字符串池常量或它将携带" abc"作为价值?

1 个答案:

答案 0 :(得分:1)

我们可以查看String constructor

public String(String original) {
    this.value = original.value;
    this.hash = original.hash;
}

请注意,原始字符串的value未被复制,因此新创建的字符串和"abc"都将引用相同的基础字符数组。