首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我设置布尔值: true时,为什么要得到默认的false?

当我设置布尔值: true时,为什么要得到默认的false?
EN

Stack Overflow用户
提问于 2013-01-07 12:51:55
回答 4查看 75关注 0票数 3

假设有三个类,名为Tester_1Tester_2Tester_3。它们的定义是:

Tester_1:

代码语言:javascript
运行
复制
class Tester_1 {

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

Tester_2:

代码语言:javascript
运行
复制
class Tester_2 {

public static boolean var = false; // Static var

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

public static boolean getBoolean() {
    return var;
}

}

Tester_3:

代码语言:javascript
运行
复制
class Tester_3 {
public static void main(String args[]) {
    System.out.println(Tester_2.getBoolean());
}
}

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

代码语言:javascript
运行
复制
java Tester_1

java Tester_3

但是我得到了这个输出:

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-07 12:54:08

static仅在Java (JVM)级别上有效。

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

票数 7
EN

Stack Overflow用户

发布于 2013-01-07 12:54:42

因为静态变量在JVM中静态地保存它们的值,但是在JVM中不被保存。一旦JVM进程退出,它在内存中的变量值就会被销毁。当第二个JVM启动时,一切都会被重新初始化。

如果需要跨运行保存值,则必须将其保存在某个地方(例如文件系统或数据库)。

票数 1
EN

Stack Overflow用户

发布于 2013-01-07 12:56:35

两次单独的处决

JVM使它变得更有趣,因为它为每次执行删除了以前的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14196347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档