构造中的静态类字段

时间:2017-11-19 12:25:55

标签: java static

// package and import things..

public class A {

    public int x;

    public static A ob;

    A() {
        A.ob.x = 5;
    }

    public static void main(String args[) {
        A.ob = new A(); 
        System.out.println(ob.x);
    }
}

为什么这段代码会给出NullPointerException?如果我将“A.ob.x”改为“this.x”,那就完成了。但是在这段代码中已经A.ob =这个吗?

1 个答案:

答案 0 :(得分:0)

A.ob = new A(); 

首先通过执行构造函数创建A,然后将创建的A分配给A.ob。它基本上等同于

A tmp = new A();
A.ob = tmp;

因此,在调用构造函数时,A.ob仍为null。所以你得到一个NullPointerException。