在Java中,有没有办法在这里保存布尔变量,以便它持续存在?

时间:2015-11-12 21:07:36

标签: java

我想创建一个布尔变量,它只是告诉用户这是第一次运行该类,还是第二次(或nth之后的时间)。我该怎么做?

public class boolTest {

  static boolean dirty;


   public static void main (String[] args) {

    dirty = false;

    if (!dirty) {
          System.out.println("First time running.");      
          dirty = true;
          System.out.println("Now it's true.");
     } 
     else 
      {
      System.out.println("this is already true.");

       }

}
}

问题是,它总是说“第一次运行” -

  

C:\ Java_Scratch> java boolTest第一次运行。现在是真的。

     

C:\ Java_Scratch> java boolTest第一次运行。现在是真的。

5 个答案:

答案 0 :(得分:6)

在整个程序的运行时中,类的所有实例共享一个类中的静态字段。一旦程序停止并重新执行,堆上存储的所有内容都将消失,无论它是否是静态的。

要做你想做的事,你需要将它存储到一个文件,一个环境变量或一些外部存储器,它不能在程序的内存中

答案 1 :(得分:4)

您需要手动将该信息保存到光盘上的某个文件中。实际上,您甚至不需要将持久保存到文件中,而只需作为文件。 (在这种情况下,文件的纯粹存在就足够了。)

例如:

File checkFile = new File(".checkfile");
if(!checkFile.exists() || !checkFile.isFile()){
   // file does not exist, so this is the first time running the program.
   // create the file so that we know we have already run the next time
   Files.createFile(checkFile.toPath());
} else {
  // This file exists, we already ran the program previously
}

答案 2 :(得分:0)

您需要将其写入文件,然后在下次读取该文件。内存(RAM)永远不会持久。磁盘上的文件是。

答案 3 :(得分:0)

答案 4 :(得分:0)

我理解你的问题的方式,你想要if部分(在你的例子中)只运行一次。 例如:

  • 您今天运行此代码 - > “第一次跑步。现在确实如此。”

  • 关闭计算机

  • 第二天再次运行该代码 - > “这已经是真的。”

如果是这种情况,则必须将“脏”信息存储在文件或数据库中。