Java函数参数传递方式总结
发布时间:2023-05-28 08:26:08
Java函数参数传递方式有值传递和引用传递两种。
1. 值传递
值传递是将实际参数的副本传入函数。在函数内部,对参数的改变不会影响到实际参数的值。Java的八种基本数据类型(int、char、byte、long、short、float、double和boolean)就是采用值传递的方式传递参数的。
例如:
public class Test {
public static void change(int i){
i = 10;
}
public static void main(String[] args){
int i = 5;
change(i);
System.out.println(i); // 输出5
}
}
在上面的例子中,change()函数中改变i的值,并不会影响到main函数中的i的值。
2. 引用传递
引用传递是将实际参数的引用地址传入函数。在函数内部,对参数的操作会影响到引用地址所指向的实际参数的值。Java中除了八种基本数据类型以外,其他类型都是引用类型。
例如:
public class Test {
public static void change(int[] arr){
arr[0] = 10;
}
public static void main(String[] args){
int[] arr = {1,2,3};
change(arr);
System.out.println(arr[0]); // 输出10
}
}
在上面的例子中,通过改变arr数组的 个元素的值,实际上改变了main函数中的arr数组的值。
需要注意的是,虽然修改引用类型的值可以影响到实际参数的值,但是如果在函数内部重新为引用类型的参数赋值,则不会影响到实际参数。例如:
public static void modify(StringBuilder s) {
s.append(" world!");
s = new StringBuilder("hello"); // 这里是重新为s赋值,不会影响到实际参数
}
public static void main(String[] args) {
StringBuilder s = new StringBuilder("hello");
modify(s);
System.out.println(s.toString()); // 输出:hello world!
}
在上面的例子中,虽然modify()函数中对s的改变影响到了实际参数的值,但是在函数内部重新为s赋值,并不会影响到实际参数的值。
总结一下:
Java的函数参数传递方式有值传递和引用传递两种,八种基本数据类型采用值传递方式,其他类型采用引用传递方式。在引用传递方式下,对参数的操作会影响到引用地址所指向的实际参数的值,但是重新为引用类型的参数赋值并不会影响到实际参数的值。
