0

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

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

    public void process() {
        tmp = MAX;
    }

tmp也会表现得像类变量吗?

4

2 回答 2

6

引用是一样的,所以只要你不改变tmp,它就会指向 的值MAX。如果MAX获得一个新值(不更改引用)tmp将指向相同的值。

tmp但是,如果没有实例,您将无法访问。

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

于 2013-10-08T08:23:20.363 回答
4

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

两者都指向相同的参考。

tmp 也会表现得像类变量吗?

它是instance会员。所以不行。你必须使它static成为班级成员。

如果您只是测试没问题,但如果这是一个真实的场景,defenitley 您需要考虑您的设计。

于 2013-10-08T08:25:10.143 回答