为什么我们不能在静态块中声明静态变量,因为静态属性,在类加载时分配内存的时候,加上类加载只执行静态块,那么为什么我们可以'这样做。
此外,在加载main方法的类加载期间,为什么我们甚至不能在main方法中声明我们的静态变量。
答案 0 :(得分:3)
在任何块中声明的任何变量都将是块本地的 - 由于这个简单的原因它们不能是静态的。
答案 1 :(得分:1)
您可以在静态块中声明变量static,因为静态变量和方法是类而不是实例变量和方法。
这意味着您将无法在方法内部看到静态字段,因为它将位于内部范围内并且根本不会成为类变量...
例如:
static int a;
static int b;
public static int sum(){
return a+b;
}
这是完全合法的,因为在调用此方法时,它将使用已加载的变量执行操作。如果你反过来这样做,这个变量属于谁?
另一个原因是默认情况下在静态块内声明的所有变量也都是静态的。