原文链接:https://blog.csdn.net/scholar_man/article/details/80900212

在Java中,参数都是按值传递的。被传递到方法中的拷贝值,要不就是一个引用或一个变量,取决于原始参数的类型。从现在开始,下面的几条规则将帮助你理解方法中对于参数的修改怎么影响原始参数变量。

  1. 在方法中,修改一个基础类型的参数永远不会影响原始参数值。
  2. 在方法中,改变一个对象参数的引用永远不会影响到原始引用。然而,它会在堆中创建了一个全新的对象。(译者注:指的是包装类和immutable对象
  3. 在方法中,修改一个对象的属性会影响原始对象参数。
  4. 在方法中,修改集合和Maps会影响原始集合参数。

https://blog.csdn.net/yushanddddfenghailin/article/details/51386120

这一篇讲的明白点

1、需要明白的概念:
堆和栈:Java中基本数据类型的值和对象的引用保存在栈中,具体对象值保存在堆中。

传递原理:
一个方法传递的参数如果是基本数据类型,则是对具体值的拷贝;如果是对象数据类型,则是对对象引用地址值的拷贝,而非具体值拷贝。

总结:
①一个方法不能改变传入基本类型的参数值。

②一个方法不能改变传入对象类型的参数的引用地址。

③一个方法能够改变传入对象类型的参数某一个属性。

最新文章

  1. 用goto做异常处理
  2. MFC操作excel
  3. [C]遍历目录下所有文件
  4. PPT产品的重要性
  5. css常见的易混淆属性和值的区别(一)
  6. cxf和spring结合,发布restFull风格的服务
  7. swoole 安装
  8. Unity获取方法的参数和方法名称
  9. poj 2886 Who Gets the Most Candies?(线段树和反素数)
  10. 【解决】Microsoft Visual Studio 2012 打开2008下编译的silverlight3项目
  11. Headfirst设计模式的C++实现——简单工厂模式(Simple Factory)
  12. 337. House Robber III
  13. C# - linq查询现有的DataTable
  14. ios开发中MVC模式的理解
  15. WordPress社会化评论插件多说、有言、灯鹭、评论啦
  16. Raphael的Braille例子
  17. 手动整合实现SSH项目开发01
  18. 【Win 10 应用开发】MIDI 音乐合成——乐理篇
  19. Kubernetes学习之路(26)之kubeasz+ansible部署集群
  20. [转载]C++之路起航——标准模板库(deque)

热门文章

  1. cordova打包遇到Connection timedout:
  2. C语言 - strlen的编程实现及总结
  3. Linux命令-文件管理(四)
  4. JS框架_(Esign.js)仿信用卡电子签名特效
  5. kill 与 killall和过滤后杀掉
  6. 在electron中使用sqlite:sql.js简介
  7. 最长不重复子串长度,时间复杂度O(n),空间复杂度O(n),Python实现
  8. ffmpeg修复时间戳
  9. Cross-Multimedia dataset
  10. no CUDA-capable device is detected,或者GPU is lost