我已经编写了如下代码。
public class Klazz {
static int __prop = 10;
public static void main( String args[] ) {
if ( args.length > 0 ) {
String l = args[0];
if ( l.equals( "-show" ) ) {
System.out.println( __prop );
}
if ( l.equals( "-set" ) ) {
int np = Integer.parseInt( args[1] );
__prop = np;
}
} else {
System.out.println( "No argument passed!" );
}
}
}
问题在于,即使我之前致电java Klazz -show
,每次拨打10
时,都会显示java Klazz -set 12
。如何保持传递的值?
答案 0 :(得分:0)
static
关键字不会使字段在程序的多次执行中保持不变。要保持字段值,您需要将其保存在某个位置,例如在文件中。
由于您正在处理属性,因此您可以使用java.util.Properties
类从.properties
文件进行保存和加载:
Properties
类表示一组持久的属性。Properties
可以保存到流中或从流加载。属性列表中的每个键及其对应的值都是一个字符串。
答案 1 :(得分:0)
static
个变量不会在同一程序的调用之间提供持久性。一旦将变量设置为新值,只要程序正在运行,它就会保持设置状态,但是一旦程序退出,该变量的值就会随之消失。
如果您希望跨运行存储变量,请使用其他机制 - 例如,将值保存在文件中(tutorial)。