Java传递参数的问题

版权声明:本文为博主原创文章,转载请注明出处:http://blog.csdn.net/lingzhm
众所周知,Java方法的形参如果是基本类型,是值传递,也就是说实参将数值传递给形参后,形参对值的操作跟实参变量毫无关系,举例:
[java] view plain copy
public static void change(int a, int b){
a = a + b;
}
int c = 1, d = 2;
change(c , d);
这时输出c, 其值还是1。

假如是引用类型作为形参:
[java] view plain copy
public static void change(Object a , Object b){

    Object temp = a ; 
    a = b; 
    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]);
这样肯定是不行的,此时,我们要把数组的引用传递给方法:
[java] view plain copy
public static void change(Object[] , int indexA , int indexB){//把将要传递引用的数组元素的下标 传递给 形参

    Object temp = Object[indexA]; 
    Object[indexA] = Object[indexB]; 
    Object[indexB] = temp; 
}

交换两个基本类型数组元素的值也是用同样的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值