一个类的静态成员

时间:2016-04-21 07:30:33

标签: java static

我是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?

有人可以帮助我吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您开始尝试2,则启动另一个JVM。使用try1作为主类的JVM的第一个实例已停止,而无论try1.main(...)做什么,都对第二个JVM没有影响。

答案 1 :(得分:0)

可能导致您永远不会持久保存新值,并且每次x = 40