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); 调用这个后,下面是否会报空指针呢?
不报,可是为什么呢?

解决方案 »

  1.   

    不会报异常,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;