Java使用值传递(pass by value)的方式来传递参数。这意味着当你将一个变量作为参数传递给一个方法时,实际上是将该变量的值(也就是存储在变量中的数据)传递给了方法,而不是传递了变量本身或引用。
当你传递一个基本数据类型(如int、float、char等)作为参数时,方法接收到的是该数据的副本,对参数的任何修改不会影响原始数据。
当你传递一个对象(包括数组)作为参数时,实际上是将对象的引用(内存地址)传递给方法,但仍然是值传递。这意味着方法内部可以通过这个引用来访问和修改对象的内容,但如果在方法内部重新分配对象的引用,原始引用不会受到影响。
这个概念可以通过以下示例来说明:
public class Main {
public static void main(String[] args) {
int x = 10;
modifyValue(x); // 基本数据类型,传递的是x的副本
System.out.println(x); // 输出 10,原始值不受影响
int[] arr = {1, 2, 3};
modifyArray(arr); // 传递的是数组的引用
System.out.println(arr[0]); // 输出 99,数组内容被修改
}
public static void modifyValue(int num) {
num = 20;
}
public static void modifyArray(int[] array) {
array[0] = 99;
}
}
总结起来,Java中的参数传递是值传递,但对于对象,传递的是引用的值。这意味着你可以修改对象的内容,但不能直接修改对象的引用。