我是JAVA的初学者,我正在读这段代码:
class trying1{
static int x =40;
public static void main(String ...s){
trying1 t = new trying1();
x =20;
System.out.println(x); // print 20
t.show1();
}
void show1(){
System.out.println(x); // print 20
}
}
class trying2{
public static void main(String ...s){
System.out.println(trying1.x); // print 40
}
}
为什么在课程 trying2 中打印 40 ?
我知道静态数据成员只获取一次内存,每个人都共享该内存。与Class trying1 类似,' x' 是类var,&如果我改变 x 的值,它将反映在每个类的实例中,或者你可以说它的值将在其内存位置被更改。 a编译并运行类 trying1 后,如果我运行 trying2.class ,则显示 40 作为输出。
但是它的值应该改为20?
有人可以帮助我吗?
谢谢!
答案 0 :(得分:1)
如果您开始尝试2,则启动另一个JVM。使用try1作为主类的JVM的第一个实例已停止,而无论try1.main(...)做什么,都对第二个JVM没有影响。
答案 1 :(得分:0)
可能导致您永远不会持久保存新值,并且每次x = 40