【发布时间】:2020-01-29 01:50:06
【问题描述】:
Animal remove = te.head;
te.head.size = 8;
te.head = null;
System.out.print(remove.getSize()); //gets 8, not null
类动物
class Animal{
int size;
public Animal(int data) {
this.size = data;
}
public int getSize() {
return this.size;
}
}
我很难理解变量“remove”引用了“te.head”,并且在使用方法“getSize()”时返回 8,而不是 null。
我是java初学者,请解释为什么“remove.geSize()”不返回null错误。应该是null吧?
【问题讨论】:
-
能添加Animal类的代码吗?除非代码在那里,否则无法知道 remove() 是什么。
-
@Scratte 我添加了
-
remove引用了te.head,原来对Animal的引用被取消了。但是您已经创建了引用的副本。那就是System.out.print(te.head);将输出null。 -
@ElliottFrisch 但实际上他们使用的是相同的地址,对吧?这就是为什么当变量更改为 5 或任何数字时,“删除”也发生了变化。所以 remove 也应该为 null - 这是我的观点
-
非常感谢!我得到了它! @ElliottFrisch