java 引用传递和值传递
时间: 2023-12-31 07:20:33 浏览: 74
Java中的参数传递可以分为引用传递和值传递两种方式。对于原始类型数据(如整型、浮点型、字符型、布尔型),传递的是它们的值,称为值传递。而对于对象类型(如数组、类、接口),传递的是它们的引用,称为引用传递。
在值传递中,方法的参数是按值传递的,即方法内对参数的改变不会影响到原始值。例如,下面的示例中,swap方法交换了参数a和b的值,但在main方法中打印出的num1和num2的值并未改变:
```java
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
swap(num1, num2);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
public static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
System.out.println("a = " + a);
System.out.println("b = " + b);
}
```
输出结果为:
```
a = 20
b = 10
num1 = 10
num2 = 20
```
在引用传递中,方法的参数是按引用传递的,即方法内对参数的改变会影响到原始值。例如,下面的示例中,updateBaseValue方法改变了baseValue的值:
```java
private static int baseValue = 30;
public static void updateBaseValue(int value) {
value = 2 * value;
}
public static void main(String[] args) {
System.out.println("调用前baseValue的值:" + baseValue);
updateBaseValue(baseValue);
System.out.println("调用后baseValue的值:" + baseValue);
}
```
输出结果为:
```
调用前baseValue的值:30
调用后baseValue的值:30
```
可以看到,调用updateBaseValue方法并不会改变baseValue的值,因为在方法内部,形参value是对实参baseValue的拷贝,并不影响原始值。
阅读全文