在Java中,静态方法内部声明的变量本身是静态的吗?

时间:2011-06-21 13:34:31

标签: java static

假设如下:

private static boolean A()
{
  int parsedUntil = 0;
  ...
  ...
  ...
}

parsedUntil被认为是一个静态变量吗?我注意到我不能在静态函数中声明它是静态的。

后续问题:我读到静态变量只会被初始化一次。这是否意味着我第一次调用函数A()时该值将被设置为零,但每隔一次我调用A(),该行被省略?

5 个答案:

答案 0 :(得分:24)

不,它不是静态变量。这是一个局部变量。方法中声明的任何变量都是局部变量。如果你想要一个静态变量,你必须在方法之外声明它:

private static int parsedUntil = 0;

无法声明只能在单个方法中使用的静态变量。

答案 1 :(得分:6)

不,A()是静态方法,parsedUntil是A中的局部变量。

static等修饰符在局部变量中无效(仅允许final

  

后续问题:我读了一个   静态变量只会是   初始化一次。

  

这是否意味着   我第一次调用函数A()了   value将设置为零,但每次都是   其他时候我叫A(),那一行是   省略?

因为parsedUntil不是静态字段,而是静态方法中的局部变量,所以情况并非如此。

答案 2 :(得分:5)

static变量不能在方法内部声明 - 它们只能是类的成员,并且在加载类时会初始化。

答案 3 :(得分:1)

Java没有像C或C ++这样的静态局部变量,所以你永远不会有static int parsedUtil = 0;

所以不,parsedUtil在任何意义上都不是“静态的”。每次执行方法时,其值都会初始化为0.

答案 4 :(得分:1)

不,不是C.

parsedUntil不是静态的。它只是一个局部变量。你不能在方法中声明静态变量。

关于第二个问题 - 静态变量可以根据需要分配多次。您不能仅重新分配最终变量。