如何在更改原始引用变量后再次引用 Java 对象
How to reference a Java object again after changing the original reference variable
我认为这将是一个很好的练习,可以帮助您更多地了解对象。
我想弄清楚如何在更改对象的原始引用变量后再次引用对象。
取如下代码:
String person = "person a"; //Line 1
person = "person b"; //Line 2
现在,第 1 行创建了一个新的 String 对象,其引用变量为 person
。第 2 行将该引用变量分配给另一个新的 String 对象。原始 String 对象现在没有引用变量。
我将如何返回并引用第 1 行内存中已存在的原始 String 对象?比如说,将引用变量 person
赋值回原来的 String 对象?作为后续的想法(并不是说我对垃圾回收了解那么多),但是原始对象是否符合垃圾回收的条件,因为它在第 2 行之后不再有引用变量,因此没有资格再次被引用?
我看到了 hashCode()
方法,还有 System.identityHashCode()
但无法弄清楚如何实现它们以再次引用原始对象。
第 3 行:person = "person a";
Java 有一个 String
内部缓存。现在,如果它不是 String
(或其他某种缓存类型),那么答案就是您不需要。因为被引用的对象符合垃圾回收条件(它不再有引用)。您可以像这样验证这一点,
String person = "person a"; //Line 1
System.out.println(person.hashCode());
person = "person b"; //Line 2
person = "person a"; //Line 3
System.out.println(person.hashCode());
会两次显示相同的hashCode;因为是同一个实例。
分配新字符串后
person = "person b";
第一个消失了..
您将无法使用它,因为您丢失了他的地址。
我认为这将是一个很好的练习,可以帮助您更多地了解对象。
我想弄清楚如何在更改对象的原始引用变量后再次引用对象。
取如下代码:
String person = "person a"; //Line 1
person = "person b"; //Line 2
现在,第 1 行创建了一个新的 String 对象,其引用变量为 person
。第 2 行将该引用变量分配给另一个新的 String 对象。原始 String 对象现在没有引用变量。
我将如何返回并引用第 1 行内存中已存在的原始 String 对象?比如说,将引用变量 person
赋值回原来的 String 对象?作为后续的想法(并不是说我对垃圾回收了解那么多),但是原始对象是否符合垃圾回收的条件,因为它在第 2 行之后不再有引用变量,因此没有资格再次被引用?
我看到了 hashCode()
方法,还有 System.identityHashCode()
但无法弄清楚如何实现它们以再次引用原始对象。
第 3 行:person = "person a";
Java 有一个 String
内部缓存。现在,如果它不是 String
(或其他某种缓存类型),那么答案就是您不需要。因为被引用的对象符合垃圾回收条件(它不再有引用)。您可以像这样验证这一点,
String person = "person a"; //Line 1
System.out.println(person.hashCode());
person = "person b"; //Line 2
person = "person a"; //Line 3
System.out.println(person.hashCode());
会两次显示相同的hashCode;因为是同一个实例。
分配新字符串后
person = "person b";
第一个消失了.. 您将无法使用它,因为您丢失了他的地址。