JAVA中的是传引用还是传值?

本文详细阐述了Java中参数传递的原理,指出Java只有值传递,即使是对象也是传递对象引用的副本,而非实际对象。通过实例分析了值传递和引用传递的区别,强调了判断实参是否受影响的关键在于地址的变化而非对象内容的变化。

Hollis大佬回答
先给出答案,java中只有值传递,没有引用传递

首先对于普通类型(int、long等)大家都可以很轻易的理解,因为传参是会拷贝一份,所以函数中不管如何修改都是不影响外部变量的值,因此普通类型一定是传值的。

那么对于对象呢,大家都知道java对象是建立在堆之上,new出来的对象返回值是堆地址,那么当传递的时候,函数还是会将实参拷贝一份,那么拷贝的内容是什么?拷贝的就是地址,因为是对象的地址,因此你可以修改对象的内容。但是当你的对象发生不是值修改而是地址修改的时候,这个时候拷贝的参数就影响不到实参的内容。因此,java对象只有值拷贝

引用传递和值传递的区别究竟是什么?
值传递和引用传递的区别并不是传递的内容。而是实参到底有没有被复制一份给形参。在判断实参内容有没有受影响的时候,要看传的的是什么,如果你传递的是个地址,那么就看这个地址的变化会不会有影响,而不是看地址指向的对象的变化。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值