Java变量传递方式对函数的影响
发布时间:2023-06-20 17:53:33
Java变量传递方式有值传递和引用传递两种方式,这两种传递方式对函数的影响有很大区别。
值传递:
在Java中,基本数据类型的变量传递方式是值传递,即将变量的值复制一份给函数,函数内使用复制后的值而不是原始值,也就是说函数内任何对该变量的修改都不会影响原始值。
例如:
public class Main {
public static void main(String[] args) {
int num = 5;
System.out.println("调用前num值:" + num);
changeNum(num);
System.out.println("调用后num值:" + num);
}
public static void changeNum(int num) {
num = 10;
System.out.println("函数内修改num值:" + num);
}
}
输出结果:
调用前num值:5 函数内修改num值:10 调用后num值:5
从结果可以看出,在函数内修改了num的值,但对原始值没有影响。
引用传递:
在Java中,非基本数据类型的变量传递方式是引用传递,即将变量的地址值传递给函数,在函数内使用该地址访问该变量的值,对该值的修改同样会影响原始值。
例如:
public class Main {
public static void main(String[] args) {
int[] arr = new int[]{1, 2, 3, 4, 5};
System.out.println("调用前arr 个元素的值:" + arr[0]);
changeArr(arr);
System.out.println("调用后arr 个元素的值:" + arr[0]);
}
public static void changeArr(int[] arr) {
arr[0] = 10;
System.out.println("函数内修改arr 个元素的值:" + arr[0]);
}
}
输出结果:
调用前arr 个元素的值:1 函数内修改arr 个元素的值:10 调用后arr 个元素的值:10
从输出结果可以看出,在函数内修改了arr的 个元素的值,这个修改对原始值也有影响。
可以看出,Java变量传递方式对函数的影响很大,对于值传递的变量,无论函数内如何修改都不会对原始值产生影响,对于引用传递的变量,函数内的修改都会影响原始值。因此,在编写函数时需要根据变量传递方式来决定是否修改变量值。
