Java值传递
Java值传递
- Java中只有值传递没有引用传递
1. 形参&实参
- 形参:方法定义时的参数,形式参数
- 实参:方法调用时的参数,实际参数
- 示例:
1
2
3
4
5
6
7
8
9
10
11public class ValuePassingExample {
public static void main(String[] args) {
int a = 5; // 实参
modifyValue(a); // 传递实参
System.out.println("a的值: " + a); // 输出: a的值: 5
}
public static void modifyValue(int value) { // 形参
value = 10; // 修改形参的值
}
}
2. 值传递&引用传递
- 值传递:方法调用时传递进去的是实参的值,方法接受的是实参值的拷贝,而不是实参本身
- 引用传递:方法调用时传递进去的是实参的地址,此时形参就是实参,对形参的修改都会同步到实参上
3. Java中只有值传递
- 3个案例说明Java中的值传递
案例1:基本数据类型的值传递
1 | public static void main(String[] args) { |
- 输出结果:
1 | a = 20 |
案例2:引用数据类型的值传递1
1 | public static void main(String[] args) { |
- 输出结果:
1 | 1 |
- 这里传递的还是值,不过,这个值是实参的地址。也就是说
change方法的参数拷贝的是arr(实参)的地址,因此,它和arr指向的是同一个数组对象。这也就说明了为什么方法内部对形参的修改会影响到实参。
案例3:引用数据类型的值传递2
1 | public class Person { |
- 输出结果:
1 | person1:小李 |
swap方法的参数person1和person2只是拷贝的实参xiaoZhang和xiaoLi的地址。因此,person1和person2的互换只是拷贝的两个地址的互换罢了,并不会影响到实参xiaoZhang和xiaoLi。
