读书人

关于static变量和实例变量的有关问题

发布时间: 2013-10-18 20:53:13 作者: rapoo

关于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
}

}

读书人网 >J2SE开发

热点推荐