java 方法参数传值问题

图片说明
我用上图中的方法时, 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就好