在Delphi / Pascal中,有一种机制可以使方法中的局部变量记住从一个方法调用到下一个方法的值。这是使用类型常量完成的。例如:
procedure blah();
const
i: integer = 0;
begin
i := i + 1;
writeln(i);
end;
每次对blah()的调用,我都会增加。输出结果如下:
1 2 3 4 五 ...
(每个数字在不同的行上,但编辑器将它们放在同一行上)
与Java有同等的意义吗?
答案 0 :(得分:5)
你可以使用静态变量。在第一次通话时启动一次。 并且在每次通话时都会保存最新值。
public class usingBlah{
static int i = 0;
void blah() {
i++;
//print here by Log.i or whatever
}
}
这里,就像你在delphi中的代码一样,我在第一次调用时定义并启动。 在下次通话时,它将保存最新值。
答案 1 :(得分:4)
可能是静态变量可以帮到你。
在创建类的第一个实例时,静态变量只被初始化一次。之后它存储了值。
答案 2 :(得分:3)
Java中最接近的等价物是类的静态变量。它具有静态生命周期,但也具有比Delphi可分配类型常量更广的范围。
在Java中,没有什么能像Delphi那样具有古怪命名的可分配类型常量,它具有局部范围,但具有静态生命周期。静态类变量尽可能接近。
在C / C ++中,您可以使用具有静态存储持续时间的局部变量,该变量与Delphi的可分配类型常量具有相同的语义。