这几天一直再纠结这个问题,今天看了这篇文章有点思路了,这跟C++里函数参数为引用、指针还是有很大区别。

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?    答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。

Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言)。

如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的 值不会改变原始的值.

如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的 值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的 地址,所以不会改变参数的值。

转载自:http://www.cnblogs.com/clara/archive/2011/09/17/2179493.html

java 地址传递 返回值_Java中的值传递和引用传递相关推荐

  1. java关于包的叙述_Java中构造方法,包的引用,final,super等词的概括

    final修饰的类不允许被继承. 一个类不能既是final的,又是abstract的.因为abstract的主要目的是定义一种约定,让子类去实现这种约定,而final表示该类不能被继承,两者矛盾. f ...

  2. java传参数的方法_java中方法的参数传递机制

    无论是什么语言,要讨论参数传递方式,就得从内存模型说起,主要是我个人觉得从内存模型来说参数传递更为直观一些.闲言少叙,下面我们就通过内存模型的方式来讨论一下Java中的参数传递. 这里的内存模型涉及到 ...

  3. ssh备考-06Struts2 往值栈中存入值,以及前端获取值栈中的值

    目录 注意点: 一.先搭建好struts2框架 index.jsp struts.xml User.java 二.往值栈压值,前端如何获取值 1.获取值栈 ValueStack1Action.java ...

  4. java中return返回值_Java中return的用法

    展开全部 一.return语句总是用在方法中,有两个作用. 一个是返回方法指定类型的值(这个值总62616964757a686964616fe59b9ee7ad9431333366306434是确定的 ...

  5. java不可变类型_Java中的值类型:为什么它们不可变?

    java不可变类型 值类型不必是不变的. 但是他们是. 在上一篇文章中,我讨论了Java中指针与引用之间的区别以及如何传递方法参数(按值传递或按引用传递). 这些与Java中尚不存在的值类型密切相关( ...

  6. java用循环给map里面存值_Java中如何遍历Map对象的4种方法

    方法一 在for-each循环中使用entries来遍历 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. 1 Map map = new HashMap();2 3 for ...

  7. java协变返回类型_Java中的协变返回类型

    java协变返回类型 协变返回类型 (Covariant return type) The covariant return type is that return type which may va ...

  8. java求最值_java中六种求最值的方式

    第一种:通过 Collections 求最值 import java.util.Arrays; import java.util.Collections; public class Demo { pu ...

  9. java的幂运算_java中幂指数值的运算

    说到幂指数的运算我们就会用到Math.pow(double a,double b),返回的结果是a的b次方. 这个方法可以满足我们大多数幂指数的计算,但是每次访问的值和传入的值都是double,自己不 ...

最新文章

  1. [C#基础]Func和Action学习
  2. 2.8加密工具与散列
  3. suse11 rpm 安装mysql_SuSE11安装MySQL5.7.22:RPM安装方式
  4. Spring Quartz的原理
  5. 数据安全:1.98亿购车者的购车记录公之于众
  6. Zabbix 神器——自动发现
  7. python全景图像拼接_超详讲解图像拼接/全景图原理和应用 | 附源码
  8. leetcode题解—1021、删除最外层的括号
  9. asp连接mysql未发现数据源名称_asp.net – 连接到MySQL导致错误“未找到数据源名称且未指定默认驱动程序”...
  10. in作为介词的用法_思维导图:为孩子收藏——常出错的英语用法集锦
  11. 刷题记录 kuangbin带你飞专题五:并查集
  12. 5900x matlab,芯片工程师入手5900X平台,简单自用工具评测
  13. 集中不等式 (Concentration inequality)
  14. Windows下查看Android手机APP日志
  15. R语言威尔科克森符号秩和(Wilcoxon Signed Rank statistic)分布
  16. m个苹果放入n个盘子
  17. ARC 138 A - Larger Score「二分 + 后缀最小值」
  18. 信号的周期、频率和角频率关系
  19. 重读《学习JavaScript数据结构与算法-第三版》- 第6章 链表(一)
  20. pmon下修改分辨率示范

热门文章

  1. C语言宏定义中#define中的井号#的使用
  2. mysql ef 一对多 更新数据库_Entity Framework_成功针对多种数据库使用实体框架(EF)...
  3. 查看apache版本_Apache Pulsar 2.6.1 版本正式发布:2.6.0 加强版,新增 OAuth2 支持
  4. python log日志_Python的log日志功能及设置方法
  5. 电脑太慢了最简单的办法怎么弄_电脑感染病毒的10种症状及简单处理办法 电脑中病毒的症状介绍...
  6. flutter创建一个demo
  7. win10下zookeeper的下载以及安装
  8. Android之知识总结
  9. python函数赋值给对象_【Python核心编程笔记】一、Python中一切皆对象
  10. android settings 源码,菜鸟学Android源码-Settings(2)