永久存储在Java中的变量,稍后访问和编辑

A variable to be stored in Java permanently, access and edit it later

假设有一个变量

int a = 10;

当我再次 运行 程序并访问数据时,我以某种方式访问​​它时是一样的。然后我可以改变它,假设

a = a + 6;

之后,除非我将其更改为其他值,否则该值保持不变。

有没有办法做类似的事情?

注意:不想使用文件和/或外部数据库。

没有。程序状态仅在执行期间存在。

如果您希望它的状态在执行之间保持不变,您必须以某种方式将 a 的值存储在您的应用程序之外。

如果您不想使用文件或数据库,您可以使用 Java preferences API

您也可以use environment variables,但这很棘手。

下载 Java 首选项 API:https://docs.oracle.com/javase/8/docs/technotes/guides/preferences/index.html

然后输入:

    import java.util.prefs.*;

    public class Example {

        public static final int a = 10;

        public void savePreference(int value) {
           Preferences prefs = Preferences.userNodeForPackage(Example.class);                
           prefs.put(a, value); 
        }

        public int readPreference() {
           Preferences prefs = Preferences.userNodeForPackage(Example.class);
           return prefs.get(a, "default");  
        }  

        public void main (String args[]){

        // Read 
        myValue = readPreferences();

        // Modify 
        myValue = myValue + 6;

        // Save
        savePreferences(myValue);            

        }

    }

希望对您有所帮助

对于像我这样的新手来说再多一点。感谢Employee

import java.util.prefs.Preferences;

public class DataClass {

public void createPreference(String name, int value) {
    Preferences prefs = Preferences.userNodeForPackage(DataClass.class);
    if (prefs.getInt(name, -1) == -1) {
        prefs.putInt(name, value);
        System.out.println("Created For you, "+name+" with value: "+value);
    } else {
        System.out.println("Already Exist");
    }
}

public int readPreference(String name) {
    Preferences prefs = Preferences.userNodeForPackage(DataClass.class);
    return prefs.getInt(name, -1);
}

public void updatePreference(String name) {
    Preferences prefs = Preferences.userNodeForPackage(DataClass.class);
    int val = prefs.getInt(name, -1);
    if (val != -1) {
        val++;
        prefs.remove(name);
        prefs.putInt(name, val);
        System.out.println("New Value of "+name+" is: "+prefs.getInt(name, -1));
    }
}

public void removePreference(String key) {
    Preferences prefs = Preferences.userNodeForPackage(DataClass.class);
    if(prefs.getInt(key, -1) != -1){
        prefs.remove(key);
        System.out.println("Removed: "+key);
    }else{
        System.out.println("No Such Data in: "+key);
    }
}

}