Java语言之深入了解方法-方法传值
范佺菁 2018-05-11 来源 : 阅读 1683 评论 0

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

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

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

1、基本数据类型

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

3、String数据类型

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

来上代码!Java语言之深入了解方法-方法传值

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

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

那让我们来看看引用数据类型(除String数据类型)在方法中的传值,来,上代码!Java语言之深入了解方法-方法传值

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

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

好,再来看看String数据类型在方法中的传值情况,接着上代码!Java语言之深入了解方法-方法传值

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

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

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

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

本文由 @职坐标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论
本文作者 联系TA

擅长Java语言,只有合理的安排和管理时间你才能做得更多,行得更远!

  • 27
    文章
  • 6532
    人气
  • 90%
    受欢迎度

已有48人表明态度,90%喜欢该老师!

进入TA的空间
求职秘籍 直通车
  • 索取资料 索取资料 索取资料
  • 答疑解惑 答疑解惑 答疑解惑
  • 技术交流 技术交流 技术交流
  • 职业测评 职业测评 职业测评
  • 面试技巧 面试技巧 面试技巧
  • 高薪秘笈 高薪秘笈 高薪秘笈
TA的其他文章 更多>>
Java语言-深度理解Java变量
经验技巧 100% 的用户喜欢
论大数据和人工智能的区别
经验技巧 88% 的用户喜欢
WEB前端学习之仿百度—布局使用
经验技巧 100% 的用户喜欢
JAVA语言之Eclipse快捷键总汇
经验技巧 100% 的用户喜欢
HTML5+CSS3从入门到精通中你需要知道的!
经验技巧 100% 的用户喜欢
其他海同师资 更多>>
吕益平
吕益平 联系TA
熟悉企业软件开发的产品设计及开发
孔庆琦
孔庆琦 联系TA
对MVC模式和三层架构有深入的研究
周鸣君
周鸣君 联系TA
擅长Hadoop/Spark大数据技术
金延鑫
金延鑫 联系TA
擅长与学生或家长及时有效沟通
程光淼
程光淼 联系TA
精通C、C++等语言、智能芯片开发
经验技巧30天热搜词 更多>>

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程