我用上图中的方法时, i1 和 i2 成功交换值,但是我把 交换算法 作为一个函数的时候,如下图所示:
i1 和 i2 没有交换值,请问是什么原因呢?
无论是哪种类型,形参都是实参的拷贝,如果是实参是基本数据类型,拷贝的是值,如果是实参是对象类型,拷贝的是引用。
所以在 exchange 方法中的两个参数都是 Integer 类型 i1 和 i2 的引用拷贝i1' 和 i2',当离开 exchange 方法时,
拷贝的引用 i1' 和 i2' 被销毁了,但是对 i1 和 i2 没有任何影响。所以不起作用。
基本数据类型 传递的是值本身 当在main()方法中定义Integer变量的时候 是在栈中为main()方法开辟的空间中的 所以在main()方法的空间中 2个值是不变的
pass by value不会改变原有的值。
Integer 换成int就好