java中值传递与引用传递的区别

java中函数传参分为两种类型,值传递和引用传递。

1.值传递

我们先来看下面这个代码:

而他的运行结果是这样的:

这说明主函数中n的值并没有随着调用fuc函数发生改变,这就是值传递。

那究竟什么类型的变量属于值传递呢?

一般来说,基本数据类型都是属于值传递。这时有可能会有同学脑袋短路了,我就把八大基本数据类型放在下面了。

基本数据类型

(1)整数类型:byte、short、int、long
(2)小数类型:float、double
(3)字符类型:char
(4)布尔类型:boolean(这么用心的作者,我直接点赞加关注(●'◡'●))

2.引用传递

这个就是经常把各位同学搞混的传递。

我们还是来先看代码:

此代码的运行结果:

我们不难发现主函数的数组被fuc函数改变从[2 ,2 , 2 ,2 ]变为[0 ,2 ,2 ,2 ]

这就是引用传递。

那引用传递是那些数据呢?

引用传递一般都是对象数据,也就是int [ ]  ret = new int[ ]{0 },这样需要new参与定义参数的数据。

接下来是大家在做题过程中遇到的一些非常重要的问题!!!!

1.String

String是引用传递,大家可以把他理解为一个字符串数组。

那这时一定就有同学要问了:

为什么String是引用传递,但是函数却改变不了他的值呢?

大家可以发现hello并没有变为world

这是因为字符串String类型在函数中是不能够改变的

而我们在fuc中令str = "world"本质上是  str = new String("world");

相当于:

我们没有改变str 而是让它指向的对象发生了变化,而原来的“hello”对象还在主函数中没有发生变化,当fuc完成,其中新建的对象“world”被销毁,此时str又重新指向了hello所在的内存,所以还是输出“hello”。

那么以上就是有关java中值传递与引用传递的区别,都看到这里了,点个赞再走吧(❤ ω ❤);

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值