引用传递--交换数值的问题
如下代码,返回的经过了swapTest()方法后输出的i1,i2是否交换了呢。。。
public class SwapTest {
private void swapTest(Integer i1,Integer i2){
Integer tem = i1;
i1 = i2;
i2 = tem;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer i1 = new Integer(1);
Integer i2 = new Integer(2);
new SwapTest().swapTest(i1, i2);
System.out.println(i1 +":" + i2);
}
}
run一下:
1:2
药丸啊,没有交换。。。
来来分析一下:
//这时候传入的只是i1,i2的那个内存引用
new SwapTest().swapTest(i1, i2);
//然后在方法里i1,i2非调用时的i1,i2,再怎么去互换他的引用,也不影响在调用时候的引用啦。。。
private void swapTest(Integer i1,Integer i2){
Integer tem = i1;
i1 = i2;
i2 = tem;
}
来来,如果交换的是全局的引用,比如这样:
public class SwapTest {
private static Integer i1 = new Integer(1);
private static Integer i2 = new Integer(2);
private void swapTest(){
Integer tem = i1;
i1 = i2;
i2 = tem;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new SwapTest().swapTest();
System.out.println(i1 +":" + i2);
}
}
输出结果:
2:1
因为这里交换的引用就是要输出的那个引用,所以能起到交换的效果。。
网友评论