开发者社区 问答 正文

关于java中尝试改变对象的引用

6、尝试改变对象的引用

change (Object j){
o=new Obj;
}

不知道这是什么意思,请各位指教。麻烦各位说一下意思,谢谢!

展开
收起
蛮大人123 2016-06-06 17:55:17 2266 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    这首先是伪代码,也就是它本身不是合法的java代码,只是说了这么一个意思。
    这里尝试在代码内改变对象的引用,但是不会作用到实际参数,看下面三组代码

    static void main()
    {
    int i = 1;
    change(i);
    System.out.printf(i); // 还是1
    }
    static void change(object o)
    {
    o = 2;
    }

    再看

    class A
    {
        public int i;
    }
    static void main()
    {
    A a = new A();
    A.i = 1;
    change(a);
    System.out.printf(i); // 是2,没有改变引用,而是直接修改的对象
    }
    static void change(object o)
    {
    A o1 = (A)o;
    o1.i = 2;
    }

    再看

    class A
    {
        public int i;
    }
    static void main()
    {
    A a = new A();
    A.i = 1;
    change(a);
    System.out.printf(i); // 还是1,因为改变引用不会作用到实参
    }
    static void change(object o)
    {
    A a = new A();
    a.i = 2;
    o = a;
    }
    2019-07-17 19:29:10
    赞同 展开评论
问答分类:
问答标签:
问答地址: