静态块内部声明的静态变量与java中静态块外部的差异

cha*_*ura 3 java static

  1. 在静态块外部声明的静态变量与在静态块内声明的变量之间有什么区别?(考虑代码段)

代码段如下:

class A{

    static int i = 10;      //line 1

    static { int i = 20;}   //line 2

    public static void main(String[] args) {
        System.out.println(A.i); //output is 10
    }
}
Run Code Online (Sandbox Code Playgroud)

2.如何在第2行访问变量'i'?

Pra*_*ker 9

 static int i = 10;      //line 1  
Run Code Online (Sandbox Code Playgroud)

这里变量的范围i是在类级别.您可以在类中的任何位置访问它.

static { int i = 20;}   //line 2
Run Code Online (Sandbox Code Playgroud)

这里变量的范围i仅限于静态块(如循环变量).您无法从外部块访问它.