被注销的部分为什么会和现在的部分替换后为什么输出会不一样?
60
40
30
50
---------------
60
40
50
50
package test;
public class test {
public static int classvalue=10;
public int instancevalue=20;
public static void main(String[] args)
{
test te=new test();
test ka=new test();
/*
ka.instancevalue=60;
System.out.println(" "+ka.instancevalue);
te.instancevalue=40;
System.out.println(" "+te.instancevalue);
te.classvalue=30;
System.out.println(" "+te.classvalue);
ka.classvalue=50;
System.out.println(" "+ka.classvalue);
*/
ka.instancevalue=60;
te.instancevalue=40;
te.classvalue=30;
ka.classvalue=50;
System.out.println(" "+ka.instancevalue);
System.out.println(" "+te.instancevalue);
System.out.println(" "+te.classvalue);
System.out.println(" "+ka.classvalue);
}
}
这个问题很简单呀
注销和没注销两者的差别就在于类的属性的值。注销的部分类的属性的值设定后,马上输出了,所以,前后的值分别为30和50,没注销的部分,类的属性的值设定后,并没有马上输出,所以,最后输出的是最后一下设定的值,都为50。
因为这一句public static int classvalue=10;你把classvalue设为静态了
想一样的话去掉static;
同意楼上的,把classvalue设成静态变量后, test类的所有实例共用一个classvalue,所以看到
不同实例的classvalue的值是一样的
对,是static的原因
public static int classvalue=10---there
去掉static
好好看看这个static的用法:)
test类的所有实例共用一个classvalue。注销的部分类的属性的值设定后,马上输出了,所以,前后的值分别为30和50;没注销的部分,最后一下设定classvalue的值是50,然后再输出当然都是50了
关于static ,你把一个变量设为static 之后,这个变量便”固定“了内存,他不可能有两段
内存,因此,你的结果就是理所当然的了的
希望对你有帮助^_^
static把变量存在内存中固定位置,可以全局调用:)