在这种情况下发生了什么,
static Object MAX = 5;
public Object tmp = 0;
public void process() {
tmp = MAX;
}
tmp 的行为也类似于类变量吗?
答案 0 :(得分:6)
引用相同,因此只要您不更改tmp
,它就会指向MAX
的值。如果MAX
获得新值(不更改引用),tmp
将指向相同的值。
但是,如果没有实例,则无法访问tmp
。
当您将5
分配给MAX
对象时,最终会得到Integer
。这是Java的自动装箱功能。 Integer
没有办法改变它的价值;因此,如果您想要更改它,则必须将MAX
重新分配给新对象。然后tmp
将不再指向相同的值,除非您再次致电process()
。
答案 1 :(得分:4)
如果将静态变量分配给局部变量怎么办?
两者都指向相同的参考。
tmp也会像类变量一样吗?
这是instance
成员。所以不行。您必须将其设为static
才能成为班级成员。
如果您的测试没问题,但如果是真实情况,那么您需要考虑设计。