在这种情况下发生了什么事,如果将静态变量赋值给局部变量会怎样?
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你需要考虑你的设计。