有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

静态块和实例块之间的java差异

有人能解释一下输出吗?我不明白为什么在打印实例块代码后显示错误

class Test
{
    int x=5,y=6;

    static Test t=new Test();

    {
        System.out.println("instance block");
        System.out.println(t.x);
    }

    public static void main(String args[])
    {
    }
}

共 (1) 个答案

  1. # 1 楼答案

    static变量t的初始化:

    static Test t = new Test();
    

    创建Test类的实例,该类执行实例初始值设定项块:

    {
        System.out.println("instance block");
        System.out.println(t.x);
    }
    

    实例初始值设定项块正在尝试打印t.x,但t仍然是null(因为t只能在创建Test类的实例后分配一个值)。因此NullPointerException被抛出