我想创建一个布尔变量,它只是告诉用户这是第一次运行该类,还是第二次(或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第一次运行。现在是真的。
答案 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)
您可以使用JPA(Java Persistence API)
http://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html
答案 4 :(得分:0)
我理解你的问题的方式,你想要if部分(在你的例子中)只运行一次。 例如:
您今天运行此代码 - > “第一次跑步。现在确实如此。”
关闭计算机
第二天再次运行该代码 - > “这已经是真的。”
如果是这种情况,则必须将“脏”信息存储在文件或数据库中。