当我设置boolean:true时,为什么我会得到默认的false?

Suh*_*pta 3 java static

让我们有三个类命名Tester_1,Tester_2,Tester_3.它们被定义为:

Tester_1:

class Tester_1 {

 public static void main(String args[]) {
    Tester_2.setBoolean(true);
    System.out.println(Tester_2.getBoolean());
 }
}
Run Code Online (Sandbox Code Playgroud)

Tester_2:

class Tester_2 {

public static boolean var = false; // Static var

public static void setBoolean(boolean value) {
   var = value;
}

public static boolean getBoolean() {
    return var;
}

}
Run Code Online (Sandbox Code Playgroud)

Tester_3:

class Tester_3 {
public static void main(String args[]) {
    System.out.println(Tester_2.getBoolean());
}
}
Run Code Online (Sandbox Code Playgroud)

在编译完所有三个类之后,我按以下顺序运行它们:

java Tester_1

java Tester_3
Run Code Online (Sandbox Code Playgroud)

但我得到这个输出:

真正从第一次运行和从第二次运行.这是为什么 ?当Tester_1将布尔值设置为一个值时,true为什么我false在运行Tester_3时会得到默认值?

ass*_*ias 7

static 仅在Java虚拟机(JVM)级别有效.

每次调用时java xxx都会创建一个新的JVM,它不与前一个调用共享任何内容=>所有静态变量都会再次获得它们的默认值.