java - 打印没有类名的静态变量会导致错误

标签 java static modifier

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/

相关文章:

java - 只需在 BDD (Hibernate) 中插入日期的 "Hour:Minutes"

java - 线程 "main"java.lang.RuntimeException : Matrix is singular 中的异常

java - SpriteBatch 设置在 libgdx 中 Actor 级别以下

java - 在静态方法中使用 this.var 时出错,如果使用任何其他 var 名称,错误就会消失

c++ - 链接静态库 C++ 时遇到问题

Java:如何使用方法更改实例变量的值

java - 修改键状态

java - CodeModel 修饰符顺序

java - 什么是 Java 原始数据类型修饰符?

java - 如何创建具有多种 View 类型的 RecyclerView