我想创建一个布尔变量,简单地"告诉"用户这是第一次运行类,还是第二次(或之后的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部分(在您的示例中)只运行一次。例如:
-
你今天运行这个代码->"第一次运行。现在它是真的。"
-
电脑
-
第二天你再次运行该代码->"这已经是真的了。"
如果是这种情况,您必须将"脏"信息存储在文件或数据库中。