假设存在三个名为Tester_1
,Tester_2
和Tester_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与上一次调用不共享任何内容=>所有静态变量都将再次获得其默认值。