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

Java 创建新对象时,新对象中存储的值是多少?,java,string,object,memory,memory-leaks,Java,String,Object,Memory,Memory Leaks,当我们使用: String s = new String("abc"); 创建字符串对象 s将存储在堆栈中,并将引用新对象,新对象将在堆中创建,而文本将在字符串常量池中 现在的问题是,新对象的值是什么?它将在字符串池常量中引用“abc”内存,还是将“abc”作为值携带?我们可以查看: 请注意,原始字符串的值没有被复制,因此新创建的字符串和“abc”都将引用相同的底层字符数组。我不太清楚您在问什么。你是在问s是否会引用常量池中的对象?你能详细说明一下吗?@Yohannes只是想问,新运算符创建的

当我们使用:

String s = new String("abc");
创建
字符串
对象

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

现在的问题是,新对象的值是什么?它将在字符串池常量中引用“abc”内存,还是将“abc”作为值携带?

我们可以查看:


请注意,原始字符串的
没有被复制,因此新创建的字符串和
“abc”
都将引用相同的底层字符数组。

我不太清楚您在问什么。你是在问
s
是否会引用常量池中的对象?你能详细说明一下吗?@Yohannes只是想问,新运算符创建的对象是指向文字abc还是将abc作为其值。@JonSkeet我只是想知道新字符串将包含什么内容,它是否会是存储在字符串常量池中的文字的内存地址,否则它本身将携带值abc。但“携带值abc”是什么意思?你需要准确地回答你的问题,否则我们无法回答。
public String(String original) {
    this.value = original.value;
    this.hash = original.hash;
}