关于函数传参的一些问题

关于函数传参的一些问题,下来我们就来看看吧!

  • 基本数据类型传参,传的是常量在常量池中的地址;
  • 引用数据类型传参,传的是对象在堆内存中的地址。

总之,我们只需记住一点,实参——>形参,传的永远是地址。

先来说一下基本数据类型和引用数据类型的区别:

基本数据类型   是原子型数据,就是不可再拆分

引用数据类型   是复合型数据,在当前对象数据中,还包括了其他更多的子数据。

eg: int a,b,c;——> arr [a,b,c]

人:姓名 年龄 性别 身高 体重....

所谓复合型数据,指的就是由多个基本数据或其他引用数据组成的一个数据。

然后再来说一下传参的具体分析:

1. 首先,形参变量永远不可能去改变实参中已储存的数据地址,除非return 实参且接收。

2. 就算形参变量所存储的数据地址被改变,那也是改变形参自己,与实参无关。

3. 无非是:实参本身指向的是一个对象,然后实参把这个对象的地址传递给了形参,这样形参就可以通过访问该地址去堆内存中找对象,然后就可以修改对象中的数据。等到实参再去访问对象时,对象中的数据就已经被改变,因为实参和形参目前使用操作的都是同一个对象!

总结:无论实参还是形参,它们们都是变量!实参就是把变量空间所存的地址给了形参而已

所以对于变量的修改而言,主要分两种!

①.要么改变该变量空间所存储的地址

int a=3;  

a=7;//这就是改变了该变量空间所存储的地址

int[] arr=new int[]{1,2,3};

arr=new int[]{3,2,1};//这也是改变了该变量空间所存储的地址

2.要么改变该变量空间所存储的地址所指向的那个对象中的数据

int[] arr=new int[]{1,2,3};

arr[0]=10; //这就是改变该变量空间所存储的地址所指向的那个对象中的数据

最后请问:对于基本数据类型而言,能否支持2操作?

答案是不能,因为基本数据类型已经是原子型数据,不能够再拆分。

 

最后,我想说的是,一定要弄清楚传参传的是什么,要搞明白其中的原理!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值