给定一个说法:在Java中传递参数时,若参数的数据类型是基本数据类型时,传递的是值,当参数的类型是引用类型时,传递的是参数的引用地址,这个说法正确吗?
观察下面代码:
public static void main(String[] args) {
int a = 1;
int b = 2;
Integer c = 3;
Integer d = 4;
swap1(a, b);
swap2(c, d);
System.out.println(" a = " + a + ", b = " + b);
System.out.println(" c = " + c + ", d = " + d);
}
public static void swap1(int x1, int y1) {
int m = x1;
x1 = y1;
y1 = m;
}
public static void swap2(Integer x2, Integer y2) {
Integer m = x2;
x2 = y2;
y2 = m;
}
//运行结果
a = 1, b = 2
c = 3, d = 4
Process finished with exit code 0
从结果可以看出,不管参数类型是基本数据类型还是引用类型,传递的都是值。所以在Java中就没有传递引用地址这个说法。
说明,在上面的代码中 c 和 x2 是两个不同的对象,并没有将 c 这个对象给 x2,在 C++ 中使用 int &参数,这种格式就是在传递引用。