假设存在三个名为Tester_1Tester_2Tester_3的类。它们的定义为:

测试人员_1:

class Tester_1 {

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

测试人员_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;
}

}

测试仪_3:
class Tester_3 {
public static void main(String args[]) {
    System.out.println(Tester_2.getBoolean());
}
}

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

java Tester_3

但我得到这个输出:

第一次运行为true,第二次运行为false。这是为什么 ?当Tester_1将布尔值设置为true值时,为什么运行Tester_3时会得到默认的false

最佳答案

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

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

10-07 19:45
查看更多