在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首次运行。现在这是真的。

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

要执行您想要的操作,您需要将其存储到一个文件、一个环境变量或一些外部存储中,它不能在程序的内存上

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

例如:

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
}

您需要将其写入一个文件,然后在下次读取该文件。内存(RAM)从不持久。磁盘上的文件为。

您可以使用JPA(Java Persistence API)

http://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html

我理解您的问题的方式是,您希望if部分(在您的示例中)只运行一次。例如:

  • 你今天运行这个代码->"第一次运行。现在它是真的。"

  • 电脑

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

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

最新更新