java按值传递?
Posted Hello Java!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java按值传递?相关的知识,希望对你有一定的参考价值。
原文链接:https://blog.csdn.net/scholar_man/article/details/80900212
在Java中,参数都是按值传递的。被传递到方法中的拷贝值,要不就是一个引用或一个变量,取决于原始参数的类型。从现在开始,下面的几条规则将帮助你理解方法中对于参数的修改怎么影响原始参数变量。
- 在方法中,修改一个基础类型的参数永远不会影响原始参数值。
- 在方法中,改变一个对象参数的引用永远不会影响到原始引用。然而,它会在堆中创建了一个全新的对象。(译者注:指的是包装类和immutable对象)
- 在方法中,修改一个对象的属性会影响原始对象参数。
- 在方法中,修改集合和Maps会影响原始集合参数。
https://blog.csdn.net/yushanddddfenghailin/article/details/51386120
这一篇讲的明白点
1、需要明白的概念:
堆和栈:Java中基本数据类型的值和对象的引用保存在栈中,具体对象值保存在堆中。
传递原理:
一个方法传递的参数如果是基本数据类型,则是对具体值的拷贝;如果是对象数据类型,则是对对象引用地址值的拷贝,而非具体值拷贝。
总结:
①一个方法不能改变传入基本类型的参数值。
②一个方法不能改变传入对象类型的参数的引用地址。
③一个方法能够改变传入对象类型的参数某一个属性。
以上是关于java按值传递?的主要内容,如果未能解决你的问题,请参考以下文章