美文网首页
引用传递--交换数值的问题

引用传递--交换数值的问题

作者: senninha | 来源:发表于2017-03-26 16:08 被阅读250次

    引用传递--交换数值的问题

    如下代码,返回的经过了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

    因为这里交换的引用就是要输出的那个引用,所以能起到交换的效果。。

    相关文章

      网友评论

          本文标题:引用传递--交换数值的问题

          本文链接:https://www.haomeiwen.com/subject/mijkottx.html