日期:2014-05-20  浏览次数:20632 次

关于static变量和实例变量的问题,求解!
public class Test {
int x=10;
static int y=20;
public static void main(String[] args){
Test t1=new Test();
Test t2=new Test();
t1.x*=2;
t1.y*=3;
t2.x+=4;
t2.y+=5;
System.out.println(t1.x);
System.out.println(t1.y);
System.out.println(t2.x);
System.out.println(t2.y);
}
}

为什么结果是20,65,14,65呢?两个65是怎么来的?求解释啊...(本人初学者)

------解决方案--------------------
t1, t2 有各自的X值, 但是他们共享Y的值
------解决方案--------------------
静态的y是公用的,两个对象用的是同一个y
而非静态的x是两个对象分开的两个。每个对象拥有独立的x
------解决方案--------------------
引用:
Quote: 引用:

t1, t2 有各自的X值, 但是他们共享Y的值

那t1.y不是应该等于60吗?


 t2.y+=5; // y = 65
------解决方案--------------------
注释写好了,按照程序执行的过程。注意y的值不管是t1改变还是t2改变,最终的改变都是改变了y的值


public class StaticTest {

int x=10;
static int y=20;
public static void main(String[] args){
StaticTest t1=new StaticTest();
StaticTest t2=new StaticTest();
t1.x*=2; //t1.x = 20
t1.y*=3; //y=60
t2.x+=4; //t2.x=14
t2.y+=5; //y=65
System.out.println(t1.x); //20
System.out.println(t1.y); //65
System.out.println(t2.x); //14
System.out.println(t2.y); //65
}

}