分析以下静态块中的一些奇怪情况:
static {
System.out.println("Inside Static Block");
i=100; // Compilation Successful , why ?
System.out.println(i); // Compilation error "Cannot reference a field before it is defined"
}
private static int i=100;
当使用以下内容时,相同的代码可以正常工作:
static {
System.out.println("Inside Static Block");
i=100; // Compilation Successful , why ?
System.out.println(MyClass.i); // Compiles OK
}
private static int i=100;
不确定为什么使用类名进行变量初始化时不需要访问变量,而使用SOP则需要?