当在新对象中传递一个引用变量时 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?
在下面的代码中:
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?