Java值传例子
在Java中,所有基本类型都是按值传递的,而所有对象类型(包括数组)都是按引用传递的。下面是一个基本类型值传递的例子:
public class Main {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
// 调用swap方法
swap(num1, num2);
// 输出结果
System.out.println("num1 = " + num1); // num1仍然是10
System.out.println("num2 = " + num2); // num2仍然是20
}
public static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
}
在这个例子中,我们定义了两个变量num1和num2,并将它们的值分别设置为10和20。然后我们调用swap方法,该方法交换了传递给它的两个参数的值。但是,当我们输出num1和num2的值时,我们发现它们仍然是10和20,因为在swap方法中,我们只是交换了a和b这两个局部变量的值,而没有影响原始的num1和num2变量。
这就是Java中的值传递:当我们将一个基本类型变量传递给一个方法时,方法只能访问该变量的值,而不能访问该变量本身。如果在方法中更改该变量的值,则不会影响原始变量的值。
Java 引用传递例子
在Java中,所有对象类型(包括数组)都是按引用传递的。这意味着当我们将一个对象传递给一个方法时,该方法可以访问该对象的实际引用,并且对该对象所做的更改将反映在原始对象中。下面是一个引用传递的例子:
public class Main {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
// 调用addOne方法
addOne(nums);
// 输出结果
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]); // 输出2, 3, 4
}
}
public static void addOne(int[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i]++;
}
}
}
在这个例子中,我们定义了一个包含三个整数的数组nums,并将其初始化为{1, 2, 3}。然后我们调用addOne方法,该方法将遍历数组并将每个元素增加1。当我们输出nums数组的值时,我们发现它已经被修改为{2, 3, 4}。
这是因为在Java中,当我们将一个数组传递给一个方法时,该方法会接收该数组的引用,而不是该数组的副本。因此,在addOne方法中所做的更改会影响原始数组。这就是Java中的引用传递:当我们将一个对象传递给一个方法时,该方法可以访问该对象的实际引用,并且对该对象所做的更改将反映在原始对象中。