您的位置:首页 > 编程语言 > Java开发

java中的参数传递

2015-09-08 23:10 411 查看
今天看了一篇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方法内部中把形参重新指向了另外一个对象,那么这时候两个变量就分别指向了两个不同的对象。

就想下面代码中的



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: