Java方法中引用类型的形参传递问题
来源:互联网 发布:在windows上安装spark 编辑:程序博客网 时间:2024/05/20 17:28
众所周知,Java方法的形参如果是基本类型,是值传递,也就是说实参将数值传递给形参后,形参对值的操作跟实参变量毫无关系,举例:
public static void change(int a, int b){a = a + b; }int c = 1, d = 2;
change(c , d);
这时输出c, 其值还是1。
假如是引用类型作为形参:
public static void change(Object a , Object b){<pre name="code" class="java">Object temp = a ;<pre name="code" class="java">a = b;<pre name="code" class="java">b = temp;}
Object c = new Object();
Object d = new Object();
change(c , d);
这时,形参a是一个新的引用,指向c引用的内容,形参b是一个新的指向d的引用,也就是a、c同时指向内存中的一个位置,b、d同时指向内存中的另一个位置。那么此时在方法中交换的引用是a、b两个引用指向的地址,此时对c、d的引用、内容均没有影响,但,如果在方法中c.xxx = newValue,那么此时a、c共同指向的内存中的内容发生了改变。
那么,如何更改对象数组中的两个元素的引用呢?
change(array[ObjectA] , array[ObjectB]);
这样肯定是不行的,此时,我们要把数组的引用传递给方法:
public static void change(Object[] , int indexA , int indexB){//把将要传递引用的数组元素的下标 传递给 形参<pre name="code" class="java"><pre name="code" class="java"><pre name="code" class="java">Object temp = Object[indexA];<pre name="code" class="java"><pre name="code" class="java"><pre name="code" class="java">Object[indexA] = Object[indexB];<pre name="code" class="java"><pre name="code" class="java"><pre name="code" class="java">Object[indexB] = temp;}
交换两个基本类型数组元素的值也是用同样的方法。
0 0
- Java方法中引用类型的形参传递问题
- java方法传递引用、传递基本类型
- Java中基本类型和引用类型的传递
- JAVA中方法参数的引用传递
- JAVA中方法参数的引用传递
- java 中值传递与引用传递以及方法中别名的问题
- Lua编程中遇到的table类型传递引用问题
- 理解Java中传递引用类型的实质
- java中基本类型的参数传递和引用类型的参数传递
- Java--传参的值传递和引用传递问题
- 在java中String,对象,Integer(包装类型的)关于引用传递还是值传递
- 详解java中给方法传递参数的两种方式:按值传递,引用传递
- 关于JAVA中参数传递问题的总结(按值传递和引用传递)
- JAVA中参数传递问题的总结(按值传递和引用传递)
- Javascript Date 类型的值传递与引用传递问题
- java中的形参为引用类型的问题
- Java中引用类型变量,对象,值类型,值传递,引用传递 区别与定义
- Java方法参数的传递机制,值传递?引用传递?
- 粉刷栅栏算法问题
- Pandaboard OMAP4460用linaro android源码启动
- 数据结构--排序之快速排序(分治,递归)
- 两个结构体ifconf和ifreq
- 从枚举类型的ordinal()方法说起
- Java方法中引用类型的形参传递问题
- 0325笔试(未完)
- Log4cplus使用
- 怎样在github上协同开发
- CF 427D 后缀数组
- WordNet词网研究7——之JWS(Java Wordnet Similarity)语义相似度计算
- jrtplib—VS2010下RTP开源协议库JRTPLIB3.9.1编译
- 领悟
- paste.deploy程序示例