这有啥不理解的
首先注意static int i= 47; 是静态的,说明类对象共享
第一步:t2.i=60 输出是60 这个好理解
第二步:t1.call() 之后 i的值变成3 输出就是3
第三步:又调了一次t2.call() 如果再输出i的值 还是3
要明白当你定义i为static的时候,不管你是t1还是t2去修改i的值,都是同一个i,这个和i归类所有,所有这个类的对象都使用这一份,所以不管你输出t1.i 还是t2.i 都是Test::i
请注意for(i=0;i<3;i++)和 for(int i=0;i<3;i++)的区别,第一种写法用的是静态变量i,第二种是局部变量。第二个问题请注意i++和++i的区别,前者是先赋值,再加,后者是先做加法再赋值
Java中静态变量它能被所有的类实例共享 所以执行完t1.call()后,i的值变成了3,此时第二个实例中的i的值因为和第一个实例中的i共享,所以为3.
至于t1.i++,是++在后,先执行,在自增,如果你改成(++t1.i)的话值就变了
for(i=0;i<3;i++){
无论你I怎么赋值 可是在FOR循环的时候 就变成0了