java中的参数传递

今天看了一篇java中值传递和引用传递的帖子,发帖时间是2007年的,帖主的观点是引起了不少观众的争议,下面说说自己对java参数传递的看法。

1.首先,java中没有引用传递一说,只有值传递。

参数传递分两种,一种是基本类型、一种是对象类型

基本类型自然是int等类型,对象类型是String或者自定义对象

下面我们分开来讲

基本类型传递



变量b的值为1,传递给changeValue方法中的形参a,那么形参a的值就会在内存中保有一个值为1的内存空间,

此时形参a和变量b是两个完全不相干的东西,所以方法changeValue中改变了形参的值为10之后,在方法外部打印变量b的值照样是1.




对象类型传递




对象传递也是值传递,并不是所谓的引用传递。在传递过程中,传递的就是对象在内存中的地址。像下面代码中

定义了变量li,指向了堆中的某个对象,那么在调用方法changeValue的时候,虚拟机会把变量li所指向的地址复制给形参list,

这时候变量li和形参list实际上操作的是同一个对象。所以在方法changeValue中往List中新增了元素也会改变变量li所指向的对象,

因为两个参数操作的是同一个对象。

但是如果在changeValue方法内部中把形参重新指向了另外一个对象,那么这时候两个变量就分别指向了两个不同的对象。

就想下面代码中的



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值