【发布时间】:2017-11-19 12:25:55
【问题描述】:
// 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 = this 了吗?
【问题讨论】:
-
对
A.ob的赋值将在A创建之后发生(在构造函数完成之后),所以在它运行时ob仍然为空。 -
在调试器中逐步完成,看看发生了什么。