当在新对象中传递一个引用变量时 Java 中字符串的内存模型

Memory models for strings in Java when one reference variable gets passed in the new Object

在下面的代码中:

String str1= new String("Hello");
String str2= new String(str1);

我想知道,当我输入 (str1) 时会传入什么? str1引用的String对象的字面量"Hello"还是内存中的地址?

在内存模型中,这是否意味着新对象包含指向 str1 引用的对象的地址,或者它是否包含其自身的文字 "Hello"?

谢谢

基本上地址被传入,但它被称为 "reference" 并且实际上可能是一个句柄或其他一些数字,而不是字面上的内存地址。每个 new SomeObject 生成自己唯一的引用。

String 内部,ctor 足够聪明,可以识别不同的 String,并复制数据,即您传递给 ctor 的字符串的 "Hello" 部分。 ctor 不会尝试直接存储引用的副本。

类似问题:Is Java pass-by-value or pass-by-reference?