淘先锋技术网

首页 1 2 3 4 5 6 7

在Java中,传递参数有两种方式:值传递和引用传递。在值传递中,参数的值被复制到一个新的变量中,而在引用传递中,参数传递的是变量的地址。

下面看一个简单的示例:

public class Test {
public static void main(String[] args) {
int a = 10;
String b = "hello";
System.out.println("a的值为:" + a);
System.out.println("b的值为:" + b);
change(a, b);
System.out.println("a的值为:" + a);
System.out.println("b的值为:" + b);
}
public static void change(int a, String b) {
a = 20;
b = "world";
System.out.println("a的值为:" + a);
System.out.println("b的值为:" + b);
}
}

以上代码输出:

a的值为:10
b的值为:hello
a的值为:20
b的值为:world
a的值为:10
b的值为:hello

在change方法中,我们将a的值设为20,将b的值设为"world",然而在main方法中,a的值仍然是10,b的值仍然是"hello"。这是因为,在Java中,对于基本数据类型的参数,传递的是值,而不是地址。

对于引用类型的参数,传递的是地址。下面看一个示例:

public class Test {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
System.out.println(Arrays.toString(arr));
change(arr);
System.out.println(Arrays.toString(arr));
}
public static void change(int[] arr) {
for (int i = 0; i< arr.length; i++) {
arr[i] *= 2;
}
System.out.println(Arrays.toString(arr));
}
}

以上代码输出:

[1, 2, 3]
[2, 4, 6]
[2, 4, 6]

在change方法中,我们将数组arr中的每个元素都乘以2,结果也输出了。而在main方法中,调用完change方法后,arr的值也被改变了。

总结来说,Java中的值传递和引用传递的区别在于传递参数的方式不同。对于基本数据类型的参数,传递的是值,而对于引用类型的参数,传递的是地址。