java 地址传递 返回值_Java中的值传递和引用传递
这几天一直再纠结这个问题,今天看了这篇文章有点思路了,这跟C++里函数参数为引用、指针还是有很大区别。
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。
Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言)。
如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的 值不会改变原始的值.
如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的 值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的 地址,所以不会改变参数的值。
转载自:http://www.cnblogs.com/clara/archive/2011/09/17/2179493.html
java 地址传递 返回值_Java中的值传递和引用传递相关推荐
- java关于包的叙述_Java中构造方法,包的引用,final,super等词的概括
final修饰的类不允许被继承. 一个类不能既是final的,又是abstract的.因为abstract的主要目的是定义一种约定,让子类去实现这种约定,而final表示该类不能被继承,两者矛盾. f ...
- java传参数的方法_java中方法的参数传递机制
无论是什么语言,要讨论参数传递方式,就得从内存模型说起,主要是我个人觉得从内存模型来说参数传递更为直观一些.闲言少叙,下面我们就通过内存模型的方式来讨论一下Java中的参数传递. 这里的内存模型涉及到 ...
- ssh备考-06Struts2 往值栈中存入值,以及前端获取值栈中的值
目录 注意点: 一.先搭建好struts2框架 index.jsp struts.xml User.java 二.往值栈压值,前端如何获取值 1.获取值栈 ValueStack1Action.java ...
- java中return返回值_Java中return的用法
展开全部 一.return语句总是用在方法中,有两个作用. 一个是返回方法指定类型的值(这个值总62616964757a686964616fe59b9ee7ad9431333366306434是确定的 ...
- java不可变类型_Java中的值类型:为什么它们不可变?
java不可变类型 值类型不必是不变的. 但是他们是. 在上一篇文章中,我讨论了Java中指针与引用之间的区别以及如何传递方法参数(按值传递或按引用传递). 这些与Java中尚不存在的值类型密切相关( ...
- java用循环给map里面存值_Java中如何遍历Map对象的4种方法
方法一 在for-each循环中使用entries来遍历 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. 1 Map map = new HashMap();2 3 for ...
- java协变返回类型_Java中的协变返回类型
java协变返回类型 协变返回类型 (Covariant return type) The covariant return type is that return type which may va ...
- java求最值_java中六种求最值的方式
第一种:通过 Collections 求最值 import java.util.Arrays; import java.util.Collections; public class Demo { pu ...
- java的幂运算_java中幂指数值的运算
说到幂指数的运算我们就会用到Math.pow(double a,double b),返回的结果是a的b次方. 这个方法可以满足我们大多数幂指数的计算,但是每次访问的值和传入的值都是double,自己不 ...
最新文章
- [C#基础]Func和Action学习
- 2.8加密工具与散列
- suse11 rpm 安装mysql_SuSE11安装MySQL5.7.22:RPM安装方式
- Spring Quartz的原理
- 数据安全:1.98亿购车者的购车记录公之于众
- Zabbix 神器——自动发现
- python全景图像拼接_超详讲解图像拼接/全景图原理和应用 | 附源码
- leetcode题解—1021、删除最外层的括号
- asp连接mysql未发现数据源名称_asp.net – 连接到MySQL导致错误“未找到数据源名称且未指定默认驱动程序”...
- in作为介词的用法_思维导图:为孩子收藏——常出错的英语用法集锦
- 刷题记录 kuangbin带你飞专题五:并查集
- 5900x matlab,芯片工程师入手5900X平台,简单自用工具评测
- 集中不等式 (Concentration inequality)
- Windows下查看Android手机APP日志
- R语言威尔科克森符号秩和(Wilcoxon Signed Rank statistic)分布
- m个苹果放入n个盘子
- ARC 138 A - Larger Score「二分 + 后缀最小值」
- 信号的周期、频率和角频率关系
- 重读《学习JavaScript数据结构与算法-第三版》- 第6章 链表(一)
- pmon下修改分辨率示范
热门文章
- C语言宏定义中#define中的井号#的使用
- mysql ef 一对多 更新数据库_Entity Framework_成功针对多种数据库使用实体框架(EF)...
- 查看apache版本_Apache Pulsar 2.6.1 版本正式发布:2.6.0 加强版,新增 OAuth2 支持
- python log日志_Python的log日志功能及设置方法
- 电脑太慢了最简单的办法怎么弄_电脑感染病毒的10种症状及简单处理办法 电脑中病毒的症状介绍...
- flutter创建一个demo
- win10下zookeeper的下载以及安装
- Android之知识总结
- python函数赋值给对象_【Python核心编程笔记】一、Python中一切皆对象
- android settings 源码,菜鸟学Android源码-Settings(2)