public class ClearingDoubtsAboutStatic {
static
{
System.out.println("Static Block1 Output: "+ClearingDoubtsAboutStatic.statVar); //------Line 5
statVar=20; //-----Line 6
System.out.println("Static Block1 Output: "+ClearingDoubtsAboutStatic.statVar); //------Line 7
System.out.println("Static Block1 Output: "+statVar); //---Line 8
}
static int statVar=30;
public static void main(String[] args) {
}
}
在我看来,第 7 行和第 8 行
会给出相同的输出,但事实并非如此。
我的问题
我不明白的是,当我们能够在第 6 行
初始化没有类名的静态变量时 但是为什么我们不能在没有类名的情况下打印它第 8 行
的类名?
最佳答案
您复制/粘贴的 2 条规则是错误的,您应该只考虑:
Static declaration and static block initialization are considered in the order they appear in the source file
因此,您可以解决问题,更改声明的顺序和静态初始化 block :
static int statVar=30;
static
{
System.out.println("Static Block1 Output: "+ statVar); //------Line 5
statVar=20; //-----Line 6
System.out.println("Static Block1 Output: "+ statVar); //------Line 7
System.out.println("Static Block1 Output: "+statVar); //---Line 8
}
关于java - 打印没有类名的静态变量会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53666751/