我们可以在java中的静态块中声明静态变量吗?

时间:2014-11-17 23:31:44

标签: java

为什么我们不能在静态块中声明静态变量,因为静态属性,在类加载时分配内存的时候,加上类加载只执行静态块,那么为什么我们可以'这样做。

此外,在加载main方法的类加载期间,为什么我们甚至不能在main方法中声明我们的静态变量。

2 个答案:

答案 0 :(得分:3)

在任何块中声明的任何变量都将是块本地的 - 由于这个简单的原因它们不能是静态的。

答案 1 :(得分:1)

您可以在静态块中声明变量static,因为静态变量和方法是类而不是实例变量和方法。

这意味着您将无法在方法内部看到静态字段,因为它将位于内部范围内并且根本不会成为类变量...

例如:

static int a;
static int b;
public static int sum(){
    return a+b;
}

这是完全合法的,因为在调用此方法时,它将使用已加载的变量执行操作。如果你反过来这样做,这个变量属于谁?

另一个原因是默认情况下在静态块内声明的所有变量也都是静态的。