方法的传参

来源:互联网 发布:mongodb ubuntu 编辑:程序博客网 时间:2024/04/29 17:21

这段代码的输出值是goodandgbc

很明显,传入的String没有被改变,而传入的char数组的值却被改变了。首先对于传参来说,区别在在于数据类型,
一、对于基本数据类型来说
是不能修改基本数据类型的值的,因为在方法中传递的只是基础数据类型的值的拷贝而已,简而言之,此题中方法内部的str与类中定义的str没有半毛钱的关系。当然,这个只是基本数据类型,传的啥出来还是啥。
二、对于对象引用类型的传参
对于此题来说,应该是 char[] kk = null;    change(kk);kk被初始化为ch对象的一个拷贝;这里是一个对象的引用而这个赋值方法,应用于这个对象的引用,也就是说kk、ch均是对象的引用,而方法作用于对象本身,所以,当方法执行完毕后,kk没有用了,而ch继续引用经过处理的对象,这个引用是没有变的。
三、对于值交换来说
真正交换的是其拷贝文件的调用,而本身对象的引用也没有进行交换。

记住:

1、方法的传参,均要进行拷贝,但是对于基本数据类型来说。2、而对象的引用,拷贝的同样是对象的引用,但是在方法中调用方法作用于所引用的对象上,改变了对象。3、值交换,交换的是引用,而不是方法外的值本身。4、三大引用数据类型:类、接口、数组
原创粉丝点击