Test t1 = new Test();
Test t2 = t1;
t1 = null;
t2 会发生什么?该对象会被垃圾收集吗?
最佳答案
What happen if I set t1=null while t2 is assigned to t1
困惑就在标题中:t2
没有分配给 t1
。这一行:
Test t2 = t1;
将 t1
中的值复制到 t2
中。没有持续的链接(除了它们具有相同的值,在本例中是一个称为“对象引用”的东西,它告诉 JVM 在内存中的何处查找对象)。
在处理这类问题时,我喜欢一些 ASCII 艺术:
线路
Test t1 = new Test();
在内存中给我们这个:
+----------+ | t1 |---+ +----------+ | +-------------+ +-->| Test object | +-------------+
Then the line:
Test t2 = t1;
给我们这个:
+----------+ | t1 |---+ +----------+ | +-------------+ +-->| Test object | +----------+ | +-------------+ | t2 |---+ +----------+
then
t1 = null;
给我们:
+----------+ | t1: null | +----------+ +-------------+ +-->| Test object | +----------+ | +-------------+ | t2 |---+ +----------+
t2
完全不受您对 t1
所做的任何操作的影响。
关于java - 如果我在 t2 分配给 t1 时设置 t1=null 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33853171/