在Java中,静态方法内部声明的变量本身是静态的吗?
假设如下:
private static boolean A() { int parsedUntil = 0; ... ... ... }
parsedUntil被认为是一个静态变量吗? 我注意到我不能在静态函数中声明它是静态的。
后续问题:我读到静态变量只会被初始化一次。 这是否意味着我第一次调用函数A()时该值将被设置为零,但每隔一次我调用A(),该行被省略?
不,它不是静态变量。 这是一个局部变量。 方法中声明的任何变量都是局部变量。 如果你想要一个静态变量,你必须在方法之外声明它:
private static int parsedUntil = 0;
无法声明只能在单个方法中使用的静态变量。
不, A()
是静态方法, parsedUntil
是A内的局部变量。
像static
这样的修饰符在局部变量中无效(只有final
才允许afaik)
后续问题:我读到静态变量只会被初始化一次。
真正
这是否意味着我第一次调用函数A()时该值将被设置为零,但每隔一次我调用A(),该行被省略?
由于parsedUntil不是静态字段,而是静态方法中的局部变量,因此情况并非如此。
static
变量不能在方法内部声明 – 它们只能是类的成员,并且在加载类时会初始化它们。
Java没有像C或C ++这样的静态局部变量,所以你永远不能有static int parsedUtil = 0;
。
所以不, parsedUtil
在任何意义上parsedUtil
是“静态的”。 每次执行该方法时,其值都初始化为0。
不,不是C.
parsedUntil不是静态的。 它只是一个局部变量。 您不能在方法中声明静态变量。
关于第二个问题 – 静态变量可以根据需要分配多次。 您不能仅重新分配最终变量。