您的位置:首页 > 其它

两个Integer的引用对象传给一个swap方法在方法内部交换引用

2018-01-29 20:29 357 查看
引用传递--交换数值的问题
如下代码,返回的经过了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);
    }

}

执行输出如下:
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) {
        new SwapTest().swapTest();
        System.out.println(i1 +":" + i2);
    }

}
执行输出结果:
2:1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐