Java参数传递是值传递

篇首语:Java基本类型传递的是值的拷贝,Java引用类型传递的是对象地址的拷贝。


在java中,java是通过值传递的。


按值传递
Java参数传递是值传递_第1张图片
Java值调用方式

基本类型是传递的值本身的一个副本。副本中的值的改变不会影响原来值的改变。如图所示:

Java参数传递是值传递_第2张图片
代码
Java参数传递是值传递_第3张图片
运行结果

内存示意图:

Java参数传递是值传递_第4张图片

引用类型传递是拷贝传递对象地址。

Java参数传递是值传递_第5张图片
拷贝对象的引用

传递的对象改变地址的时候,不影响原对象的地址。但是传递对象进行内部组成的时候,原数据也会改变。具体如图:

图一可以看出改变副本的地址的时候,原数据地址不会改变。

Java参数传递是值传递_第6张图片
运行结果(一)

图二可以看出,副本改变对象的属性的时候,源数据跟着改变。

Java参数传递是值传递_第7张图片
运行结果(二)
Java参数传递是值传递_第8张图片
内存示意

总结如下:(来自《Java核心技术》)

*一个方法不能修改一个基本数据类型的参数(即数值或布尔型)。

*一个方法可以改变一个对象参数的状态。

*一个方法不能让对象参数引用一个新的对象。

*******************

你可能感兴趣的:(Java参数传递是值传递)