基本类型参数和引用类型参数在Java函数中的使用
发布时间:2023-10-22 07:38:06
在Java函数中,参数可以分为基本类型参数和引用类型参数。基本类型参数包括整型(int)、浮点型(float)、布尔型(boolean)等,而引用类型参数包括数组、字符串、自定义类等。
基本类型参数,在函数中传递的是该类型的值,而不是地址。因此,在函数内对参数的任何修改都不会影响到函数外部的实参。这是因为在Java中,基本类型的赋值是按值传递的,而不是按引用传递的。
例如,下面的例子演示了在函数中修改基本类型参数的值不会影响到函数外部的实参:
public class Main {
public static void main(String[] args) {
int value = 10;
System.out.println("Before call: " + value);
modifyValue(value);
System.out.println("After call: " + value);
}
public static void modifyValue(int val) {
val = 20;
System.out.println("Inside method: " + val);
}
}
输出结果为:
Before call: 10 Inside method: 20 After call: 10
可以看到,虽然在函数内部修改了val的值为20,但是函数外部的value仍然是10。
引用类型参数,在函数中传递的是对象的地址,即对象的引用。因此,在函数内对参数的修改会影响到函数外部传入的对象。这是因为在Java中,引用类型的赋值是按引用传递的。
例如,下面的例子演示了在函数中修改引用类型参数的值会影响到函数外部传入的对象:
public class Main {
public static void main(String[] args) {
int[] array = {1, 2, 3};
System.out.println("Before call: " + Arrays.toString(array));
modifyArray(array);
System.out.println("After call: " + Arrays.toString(array));
}
public static void modifyArray(int[] arr) {
arr[0] = 0;
System.out.println("Inside method: " + Arrays.toString(arr));
}
}
输出结果为:
Before call: [1, 2, 3] Inside method: [0, 2, 3] After call: [0, 2, 3]
可以看到,虽然在函数内部修改了arr的 个元素为0,但是函数外部的array也被修改了。
需要注意的是,在函数中修改引用类型参数的引用,将会导致函数外部的引用指向另一个对象,而不会修改函数外部的引用指向的对象。
总结起来,基本类型参数在函数中是按值传递的,而引用类型参数在函数中是按引用传递的。但是需要注意的是,即使在函数内部修改了引用类型参数的值,也不会修改函数外部引用指向的对象。
