Java 类的静态成员

Java 类的静态成员,java,static,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(){ Syste

我是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
    }
}
为什么它在课堂上打印40trying2

我知道静态数据成员只获得一次内存,每个人都共享该内存。与类trying1一样,'x'是一个类变量,&如果我更改x的值,它将反映在类的每个实例中,或者您可以说它的值将在其内存位置更改。a编译并运行classtrying1后,如果运行trying2.class,则会将40显示为输出

但是,它的值应该更改为20

有人能帮我解决这个问题吗


谢谢

可能是因为您从不持久保存新值,每次x=40时,如果您开始尝试2,您就会启动另一个JVM。JVM的第一个实例(使用trying1作为主类)已停止,trying1.main(…)所做的任何操作都不会对第二个JVM产生影响。

如何运行此操作?javac trying1.java,因此创建了两个“.class”文件。您可以使用java命令运行其中一个。这意味着您开始trying1,它运行,结束,然后开始trying2,它也跑了?显然。。这有什么问题?它可能与类加载或运行时间有关,静态成员在类加载时获得内存有两个独立的运行,两个主运行,两个执行,没有一个持久化