将一些类变量重新分配给新对象时会发生什么?

时间:2014-12-23 22:53:15

标签: java oop

SomeClass classvar = new SomeClass(); --> Object 
classvar = new SomeClass(); --> Object 2

所以我对JAVA的理解是,在第一行中,创建了SomeClass的classvar对象。 在下一行中,还有另一个由classvar创建的对象。

我的问题 - 这里会有什么变化?是否会因为第二行ORR而更新classvar对象的引用,第1行中创建的对象将被垃圾收集?

编辑:添加代码标记

2 个答案:

答案 0 :(得分:2)

我想你可能会问:

SomeClass classvar = new SomeClass();// --> Object 1

classvar = new SomeClass();// --> Object 2

如果是这种情况,那么创建的第一个SomeClass对象将失去其引用并最终被垃圾收集(这意味着该对象被销毁以释放内存)。

现在,classvar变量将引用已创建的第二个SomeClass对象。

答案 1 :(得分:1)

这是一个编译错误,你不能在java中有两个同名的变量

如果你的意思是

SomeClass classvar = new SomeClass(); --> Object 1
classvar = new SomeClass(); --> Object 2

然后第一个对象引用第一个Object将被新引用覆盖。下次gc运行时,它将被删除。