【发布时间】:2013-10-28 11:10:17
【问题描述】:
public class MyClassTest {
private static MyClass m;
public static void main(String[] args) {
m.initMe(getint());
}
public static int getint() {
m = new MyClass();
return (int) Math.random()*100;
}
}
class MyClass{
int i;
void initMe(int i) {
this.i = i;
System.out.println(this.i);
}
}
这段代码sn-p给出NullPointerException,导致initMe()在getint被调用之前被调用。这个问题的根本原因是什么?是 JAVA 按值传递,所以引用更新不受影响。
给我背后的正当理由。
【问题讨论】:
-
main是第一个调用的方法,初始化m,然后调用MyClass的initMe。
-
@Batty 是的,如果我首先调用
getint,那么代码运行完美......但我问的是什么原因,所以我的代码给了我例外。