如果将静态变量分配给局部变量怎么办?

时间:2013-10-08 08:21:45

标签: java static-members

在这种情况下发生了什么,

static Object MAX = 5;
    public Object tmp = 0;

    public void process() {
        tmp = MAX;
    }

tmp 的行为也类似于类变量吗?

2 个答案:

答案 0 :(得分:6)

引用相同,因此只要您不更改tmp,它就会指向MAX的值。如果MAX获得新值(不更改引用),tmp将指向相同的值。

但是,如果没有实例,则无法访问tmp

当您将5分配给MAX对象时,最终会得到Integer。这是Java的自动装箱功能。 Integer没有办法改变它的价值;因此,如果您想要更改它,则必须将MAX重新分配给新对象。然后tmp将不再指向相同的值,除非您再次致电process()

答案 1 :(得分:4)

  

如果将静态变量分配给局部变量怎么办?

两者都指向相同的参考。

  

tmp也会像类变量一样吗?

这是instance成员。所以不行。您必须将其设为static才能成为班级成员。

如果您的测试没问题,但如果是真实情况,那么您需要考虑设计。