在这种情况下发生了什么,
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 您需要考虑您的设计。