牛客面试题集锦之java中的"引用传递"

java没有指针,因此也就没有引用传递这一说法,只有值传递,不过可以通过对象来实现引用传递,这种引用传递和指针原生的引用传递不一样:

java值传递:方法调用时,实际参数将它的值传递个形式参数,期间在方法中形式参数的改变并不会改变实际参数的值

java引用传递:也叫做地址传递。传递参数时,形式参数将和实际参数指向同一个地址,相当于实际参数的一个副本,具体实际参数会不会改变需要看操作的方式

java中的引用传递面试题:

Qusetion1:java中有引用传递吗?

Answer1:java中所有的都是值传递,没有引用传递,有些我们看起来类似于C的指针引用传递的只是传递的是地址,仍然是值传递

Question1:如下代码:
    public class test{
        public static void main(String[] args){
            test t = new test();
            Integer i1 = new Integer(1);
            Integer i2 = i1;
            t.fun(t2);
            System.out.println(i1.equals(i2));
        }
        public void fun(Integer i){
            i = new Integer(2); 
        }
    }
    最终输出的结果为true or false?

Answer2:最终的结果是输出true,其赋值过程如下:
        开始创建一个Integer对象:i1----->地区1(new Integer(1))
        然后创建一个Integer对象并且指向i1:i2----->i1----->地区1(new Integer(1))
        接下来将i2对象传递给方法中的形参i:i----->i2----->i1----->地区1(new Integer(1))
        在该方法中重新为i形参赋值:i------>地区2(new Integer(2))

    最后的结果如下:
        i1----->i2----->地区1(new Integer(1))
        i------>地区2(new Integer(2))
    最终i1还是和i2指向同一个位置,当把i2实参传递给形参时只是使得形参和实参同时指向一个地址而已,之后在方法中的操作只是改变了形参自己的地址而已,并没有改变原来地址指向的值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值