Java中的参数是值传递还是引用传递?
在java中, 参数传递只有值传递 ,不论是基本类型还是引用类型。
其中的区别在于:
- 基本数据类型(如byte,short,int等):传递的参数是值的副本,即基本类型的数值本身。因此在方法中,对方法参数的任何修改都不会影响原始变量。
- 引用数据类型(如对象引用):传递的参数是引用数据所在硬件内存地址的值。因此,在方法中能够通过修改对像内部的值–>改变函数外的原始引用数据的值。
可以看以下的代码帮助理解:
public class ParameterPassingExample {
// 基本数据类型值传递示例方法
public static void changePrimitive(int num) {
num = 100; // 修改方法参数的值
System.out.println("在 changePrimitive 方法中,num 的值为: " + num);
}
// 引用数据类型值传递示例方法
public static void changeArray(int[] arr) {
arr[0] = 100; // 修改数组第一个元素的值
System.out.println("在 changeArray 方法中,数组第一个元素的值为: " + arr[0]);
}
public static void main(String[] args) {
// 基本数据类型值传递测试
int number = 10;
System.out.println("调用 changePrimitive 方法前,number 的值为: " + number);
changePrimitive(number);
System.out.println("调用 changePrimitive 方法后,number 的值为: " + number);
// 引用数据类型值传递测试
int[] array = {1, 2, 3};
System.out.println("调用 changeArray 方法前,数组第一个元素的值为: " + array[0]);
changeArray(array);
System.out.println("调用 changeArray 方法后,数组第一个元素的值为: " + array[0]);
}
}