Java 函数的参数传递方式——传值还是传引用?
发布时间:2023-05-25 13:35:13
Java 函数的参数传递方式是一个常见问题,它也是常见的面试题之一。在 Java 中,参数传递可以是传值或传引用。
传值
Java 中的基本数据类型(如 int、double、char 等)都是属于值类型,参数传递时是按值传递的。按值传递意味着在调用函数时,实参的值被复制到形参中,函数内部对形参的修改不会影响实参的值。
例如,在下面的示例中,函数 addFive 的参数 num 是按值传递的,即函数内部对 num 的修改不会影响主函数中的变量 x:
public class Main {
public static void main(String[] args) {
int x = 5;
addFive(x);
System.out.println(x); // 输出 5
}
public static void addFive(int num) {
num += 5;
}
}
传引用
Java 中的对象类型都是引用类型,参数传递时可以按引用传递。按引用传递意味着在调用函数时,实参的引用被复制到形参中,函数内部对形参的修改会影响实参。
例如,在下面的示例中,函数 addToList 的参数 list 是按引用传递的,即函数内部对 list 的修改会影响主函数中的变量 myList:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> myList = new ArrayList<>();
myList.add("A");
myList.add("B");
addToList(myList);
System.out.println(myList); // 输出 [A, B, C]
}
public static void addToList(List<String> list) {
list.add("C");
}
}
注意:Java 中没有指针的概念,所以不能按指针传递参数。引用类型传递的本质是传递对象的地址,而不是传递对象本身。
总结
Java 中参数传递可以是传值或传引用。基本数据类型按值传递,对象类型按引用传递。了解传值和传引用之后,我们就可以更好地理解 Java 中的参数传递机制,避免一些常见的错误。
