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

2023-12-14 19:34:10

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中值传递与引用传递的区别,都看到这里了,点个赞再走吧(? ω ?);

文章来源:https://blog.csdn.net/a13931329858/article/details/132729606
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。