如何在 Java 中创建静态局部变量?
我读过Java不支持与C / C++不同的局部变量。现在,如果我想用局部变量编写一个函数,其值应该在函数调用之间保持不变,我该怎么做?
我应该求助于使用实例变量吗?static
我读过Java不支持与C / C++不同的局部变量。现在,如果我想用局部变量编写一个函数,其值应该在函数调用之间保持不变,我该怎么做?
我应该求助于使用实例变量吗?static
可以有一个静态类变量,该变量将保留在类的所有实例中。如果这就是你想要的。如果不是,请使用实例变量,该变量将仅在对此对象的方法调用之间保留。
public class Foo {
static int bar;
//set bar somewhere
public int baz() {
return 3 * bar;
}
}
如果要在函数调用之间重用变量值,并将此变量与其他方法隔离开来,则应将其封装在对象中。首先,定义一个仅使用“类似静态”的变量和所需函数的类:
class MyFunctionWithState {
private int myVar = 0;
public int call() {
myVar++;
return myVar;
}
}
然后,从您的客户端代码中:
class Foo {
private MyFunctionWithState func = new MyFunctionWithState();
public int bar() {
return func.call();
}
}
现在,如果依赖于内部状态,则可以传递相关数据或传递一个实例,并让函数调用相应的 getter:func
Foo
call()
Foo
class MyFunctionWithState {
private int myVar = 0;
public int call( Foo f ) {
myVar += f.getBaz();
return myVar;
}
}
class Foo {
private MyFunctionWithState func = new MyFunctionWithState();
public int bar() {
return func.call( this );
}
public int getBaz() { /*...*/ }
}