在下面的代码中:
String str1= new String("Hello");
String str2= new String(str1);
我想知道,当我输入 (str1) 时会传入什么? 文字“Hello”还是str1引用的String对象在内存中的地址?
在内存模型中,这是否意味着新对象包含指向 str1 引用的对象的地址,还是包含它自己的文字“Hello”?
谢谢
最佳答案
基本上,地址被传入,但它被称为“引用”,实际上可能是句柄或其他数字,而不是字面上的内存地址。每个new SomeObject
都会生成自己唯一的引用。
在String
内部,构造函数足够聪明,可以识别不同的String
,并复制数据,即您传递给构造函数的字符串的“Hello”部分。该构造函数不会尝试直接存储引用的副本。
关于java - 当一个引用变量在新对象中传递时,Java 中字符串的内存模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34111143/