可能的重复:
Java 是“按引用传递”吗?
我试图了解下面编写的 2 个 Java 程序之间的区别:
public class Swapping {
public static void main(String[] args) {
IntWrap i = new IntWrap(10);
IntWrap j = new IntWrap(20);
swap(i, j);
System.out.println("i " + i.i + ", j " + j.i);
}
public static void swap(IntWrap i , IntWrap j){
int x = i.i;
i.i = j.i;
j.i = x;
System.out.println("i " + i.i + ", j " + j.i);
}
}
public class IntWrap {
int i;
public IntWrap(int i){
this.i = i;
}
}
输出 :
i 20, j 10
i 20, j 10
第二个:
public class Swapping {
public static void main(String[] args) {
Integer i = new Integer(10);
Integer j = new Integer(20);
swap(i, j);
System.out.println("i " + i + ", j " + j);
}
public static void swap(Integer i , Integer j){
Integer temp = new Integer(i);
i = j;
j = temp;
System.out.println("i " + i + ", j " + j);
}
}
输出 :
i 20, j 10
i 10, j 20
我无法理解即使我传递了 Integer 对象,它也应该在原始程序中被交换。如果我在它的顶部编写包装类,因为我再次只传递对象,它会产生什么不同。