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

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

作者: 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

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

相关文章

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

    引用传递--交换数值的问题 来来分析一下: 来来,如果交换的是全局的引用,比如这样: 输出结果:2:1 因为这里交...

  • 函数值传递、地址传递(引用)

    int exchangeValue(int *a,int *b); (void)viewDidLoad {[sup...

  • java SE

    问题一:Java中是引用传递还是值传递? 值传递:将方法实际参数值复制到另一个变量,然后复制的对象被传递,这就是为...

  • Python函数参数传递机制(超级详细)

    Python中,函数参数由实参传递给形参的过程,是由参数传递机制来控制的。通过学习《Python函数值传递和引用传...

  • 对象类型的参数传递

    对象类型的参数传递: JAVA中只有值传递.基本类型好理解,直接传递数值 基本数据类型作为参数,直接操作引用类型作...

  • JS中函数参数值传递和引用传递

    一.函数传递基本类型: 从上面代码执行得到的结果10,20可以看出val在传递给函数的形参的时候是拷贝了一个副本传...

  • SwiftUI学习-2 Struct和Class

    两者的区别 1.Struct是数值类型,Class是引用类型。 数值类型在传递过程中会被copy。当然,被拷贝的只...

  • Java面试集锦

    1. 引用传递的问题(记住java里面是没有指针的,只有值拷贝和引用拷贝) 引用拷贝拷贝的实际是地址,当引用传递过...

  • JS中容易出错的点

    基本类型和引用类型的赋值问题 上例很好地证明了:基本类型值按值传递,引用类型值按引用传递 同名变量和方法覆盖问题 ...

  • 学习JavaScript 必须要了解的 10 个概念,对提升技能

    数值类型 vs. 引用类型 —了解如何复制对象、数组和函数以及如何将它们传递到函数中。知道引用类型复制的是什么。了...

网友评论

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

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