问题描述
由于
test
引用counter
这个假设是错误的。在Java中,您不能引用变量。变量中存储的是一个值。该值可以是原始类型值或引用类型值。对于基元,值是基元的值。对于引用类型,
在
int a = 0;
int b = a;
计算该变量a
以产生一个值0
,并将该值存储在中b
。
在
Integer a = 0;
Integer b = a;
0
转换为Integer
直通Integer.valueOf(int)
和值,将对Integer
对象的引用存储在中a
。然后a
进行评估,生成对该Integer
对象的引用的值,并将该值存储在中b
。
同样,变量static
是无关紧要的事实。
counter++;
test = counter;
解决方法
我总是理解静态变量在被引用时共享一个实例。我想对此进行测试,但结果与我预期的不同。
static Integer counter = 0;
static Integer test = counter;
public static void main(String args[]) {
counter++;
System.out.println("counter: " + counter);
System.out.println("test: " + test);
}
输出:
柜台:1
测试:0
由于test
引用counter
我认为,当我增加counter
那么test
将自动以及递增。但是,似乎test
是0
从某处引用,问题是在哪里?