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