public class ReferenceType {
public void changeReference(Point point) {
point = null;
}
public static void main(String[] args) {
Point point = new Point(1, 2);
ReferenceType test = new ReferenceType();
test.changeReference(point);
int x = point.x;
System.out.println("x 的值是 " + x );
}
}
test.changeReference(point); 调用这个后,下面是否会报空指针呢?
不报,可是为什么呢?
------解决方案--------------------
形参和实参的问题
------解决方案--------------------
不会报异常,
test.changeReference(point);
执行到这里得时候:把 point传进changeReference()里面
public void changeReference(Point point) {
point = null; //这里得point是changeReference里的局部变量,只在changeReference中有效
//和前面那个point没有任何关系,只是碰巧重名了
}
int x = point.x;
所以不会报异常。
如果把changeReference函数改下,就好理解了
public void changeReference(Point point2) {
point2 = null;
}