龙空技术网

值传递与引用传递有哪些区别?

兔子六号 27

前言:

当前咱们对“传入值参数和传入引用参数的区别”大体比较重视,大家都需要了解一些“传入值参数和传入引用参数的区别”的相关资讯。那么小编同时在网络上网罗了一些有关“传入值参数和传入引用参数的区别””的相关知识,希望各位老铁们能喜欢,你们一起来学习一下吧!

问:值传递与引用传递有哪些区别?

答:方法调用是编程语言中非常重要的一个特性,在方法调用时,通常需要传递一些参数来完成特定的功能。Java语言提供了两种参数传递的方式:值传递和引用传递。

值传递

在方法调用中,实参会把它的值传递给形参,形参只是用实参的值初始化一个临时的存储单元,因此形参与实参虽然有着相同的值,但是却有着不同的存储单元,因此对形参的改变不会影响实参的值。

引用传递

在方法调用中,传递的是对象(也可以看作是对象的地址),这时形参与实参的对象指向同一块存储单元,因此对形参的修改就会影响实参的值。

在Java语言中,原始数据类型在传递参数时都是按值传递,而包装类型在传递参数时是按引用传递的。

Java中处理8种基本的数据类型用的是值传递,其他所有类型都用的是引用传递,由于这8种基本数据类型的包装类型都是不可变类,因此增加了对“按引用传递”的理解难度。

例如如下示例:

运行结果:

对于上述程序的输出,不少同学可能会认为,Integer是按值传递的而不是按引用传递的,其实这是一个理解上的误区,上述代码还是按引用传递的,只是由于Integer是不可变类,因此没有提供改变它值的方法,在上例中,在执行完语句b++后,由于Integer是不可变类,因此此时会创建一个新值为2的Integer赋值给b,此时b与a其实已经没有任何关系了。

标签: #传入值参数和传入引用参数的区别 #参数的传值和传引用有什么区别 #什么是参数的值传递和引用传递 #值传参和引用传参 #函数传值和传引用的区别