java中的参数传递与引用

本文深入解析了Java中传参机制的本质。无论是基本类型还是引用类型,Java都传递参数的副本。对于基本类型变量,传递其副本;对于引用类型变量,则传递引用的副本。特别讨论了final类型对象的处理方式及其对传参的影响。
摘要由CSDN通过智能技术生成

有些java书籍在介绍java中的传参时都说,不论是基本类型还是对象类型,都是传值。这种说法不能算错,但往往让很多初学java的人感到很困惑。因为这里所说的传值与c++中简单变量的传值已经不是同一个概念。

对于java传参,我觉得更准确一点的描述是,不论参数是什么类型,传递的都是参数的副本。

  • 对于基本类型的变量,传递值的副本。
  • 对于引用类型的变量(包括对象与数组),传递引用的副本。由于引用的副本与引用指向的都是同一个对象,因此对引用副本的操作仍然会改变对象的值。

值得注意的是,如果一个类是final类型,那么这个类的实例(即对象)是不可变的。当尝试通过该对象的引用对对象重新赋值时,java会生成一个新的对象并将该引用指向新的对象。因此之前的对象并没有发生任何改变。

因此当参数是引用类型时,如果该类型是final的,此时的传参看起来会和基本类型的传值差不多(不会改变原有对象的值)。但是实质上传递的还是引用的副本。

final类型的类包括:

  • String类
  • 基本类型的包装类,包括Integer、Boolean等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值