参考链接:Java传值须知
看完上面的文章总结一下:
Java的只有值传递,没有引用传递。
在Java中,参数都是按值传递的。被传递到方法中的拷贝值,要不就是一个引用或一个变量,取决于原始参数的类型。
参数类型有四种:
基本数据类型、包装类(属于immunable不可变对象)、集合类、自定义对象类
- 在方法中,修改一个基础类型的参数永远不会影响原始参数值。
- 在方法中,改变一个对象参数的引用永远不会影响到原始引用。然而,它会在堆中创建了一个全新的对象。(注:指的是包装类和immutable不可变对象)
- 在方法中,修改一个对象的属性会影响原始对象参数。
- 在方法中,修改集合和Maps会影响原始集合参数。