qq_33091747 2017-08-21 03:20 采纳率: 100%
浏览 1698
已采纳

JAVA在方法的末尾将对象指向空,在调用方法完毕后,再输出对象的值,对象不是null

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语句不报空指针异常呢?
而打开其他两句的注释 会报异常?

  • 写回答

3条回答 默认 最新

  • vane11 2017-08-21 03:33
    关注

    形参和实参的区别
    方法中的形参和实参只是指向了同一个对象,但形参和实参的引用并不是同一个

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含