日期:2014-05-20  浏览次数:20649 次

大家帮忙看看
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;