class DataWrap
{
int a;
int b;
}
public class ReferenceTransferTest
{
public static void swap(DataWrap dw)
{
int tmp = dw.a;
dw.a = dw.b;
dw.b = tmp;
System.out.println("swap方法里,a成员变量的值是"
- dw.a + ";b成员变量的值是" + dw.b);
// 把dw直接赋为null,让它不再指向任何有效地址。
dw = null;
// System.out.println(dw.a+""+dw.b);
}
public static void main(String[] args)
{
DataWrap dw = new DataWrap();
dw.a = 6;
dw.b = 9;
swap(dw);
// dw=null;
System.out.println("交换结束后,a成员变量的值是"
- dw.a + ";b成员变量的值是" + dw.b); } }
这里方法的最后释放了dw,指向空,但是调用方法之后,再次输出dw的a,b,可以得到输出值。
但是如果是使用注释的任意一句话,都会提示说该句有一个nullpoint异常。
但是方法最后不是dw指向null了吗?为什么执行了swap之后,print语句不报空指针异常呢?
而打开其他两句的注释 会报异常?