java 方法 传值_Java语言之深入了解方法-方法传值

在学Java语言方法的老铁们是不是遇到这样的问题,方法中传值传吧传吧就......咦?我的数据呢?怎么丢了?怎么这里报空指针了呢?本文就带大家来看看Java语言的深入了解方法中的方法传值吧。

其实,这个是老铁们没有吧方法中传值没有搞清楚,在方法中传值我大体分成三种类型:

1、基本数据类型

2、引用数值类型(除String数据类型)

3、String数据类型

我们先来说说基本数据类型:

来上代码!

a077f2fc6744240b15d54e5b757d5ab1.png

以上我们在第9行这里我们可以猜测下a的值是多少,通过实际运行后的结果是9,那有些老铁就有点晕了,为什么就变成9了呢?a传入了方法中然后给它赋值了6,那讲道理是应该6啊!是不是有种马景涛的咆哮了?其实,主要问题在于把a传入了方法中,我们的研究到底是a传入了方法,还是a中的值拷贝一份给了这个方法呢?来,这时候就该上图了。

e50359cc5042e30ce0bc7f5d22d9e648.png

从上图看出,其实主函数中的a和方法中的a是两个a,并不是一个,实际是把主函数中a的值赋值给了方法中的a,而主方法中a的值并没有发生改变,方法中的a由于只存在这个方法中,当方法调用完以后就随着一起销毁了,所以并没有改变主方法a中的值,故此主函数中的a输出的还是9。

那让我们来看看引用数据类型(除String数据类型)在方法中的传值,来,上代码!

31726b192df3f2710eac635150a72bff.png

这里有发生了变化,在第9行我们通过了改变输出是多少呢?结果是6,我此时此刻貌似听到了一群羊驼在奔跑,上面的案例中是没有变化,但是到了这里怎么又变化了呢?先让我们来看看一张图吧。

5fc2aefef6b2ef190b398cb75e85d3f6.png

从上图我们发现,由于引用数据类型的实际数据存放在堆内存中的,而栈里的变量保存的是堆内存中数据的引用地址,所以是把引用地址传入了方法,也就是说主方法中的变量和方法中的变量引用的是同一个引用地址,即同一块区域,所以只要这个区域有变化,引用这个区域的变量中的数据就会有改变,是不是很神奇?

好,再来看看String数据类型在方法中的传值情况,接着上代码!

2c42a5376311561c028211f507febf68.png

我觉得这时候有老铁要打人了,说好的引用数据类型是要变化的呢?怎么又不变了?来,谁和我打一架吧!其实,String虽说是引用数据类型,但是有它的特殊性,因为String只要给这个变量赋值,只要这个值是内存中不存在的值就会开辟新的内存,所以这里字符串的9和字符串的6是不同的引用地址,并不是在原来的引用地址中来改变的,所以主函数中的a里的值还是原先的并没有做改变。

总结下,大家在传值中需要弄明白传值传的到底是何物,其实传值传的就是一个值而已,基本数据类型传的是实际的数据,引用数据类型是传的引用地址的值,大家可以使用案例好好琢磨下。

随时欢迎您加微信号(Iotek666),进行交流,本微信号会不定期推送技术相关优质文章、热点资讯、视频资源及生活趣事,更乐意与您一起交流IT知识,让我们在闲暇之余巩固一下自己的知识体系 ,扩充一下自己的知识面。快利用琐碎时间给自己充电吧!

希望这篇文章可以帮助到你,总之同学们,it资讯尽在职坐标。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值