Java 数组参数传递:按值和按引用217


在 Java 中,数组是一种引用类型,存储着相同数据类型的元素。当将数组作为参数传递给方法时,行为取决于传递类型。

按值传递基础类型

当基本数据类型的数组(如 int[]、double[] 等)作为参数传递时,实际传递的是数组的一个副本。这意味着对参数数组所做的任何修改都不会影响原始数组。public static void main(String[] args) {
int[] numbers = {1, 2, 3};
modifyArray(numbers);
((numbers)); // 输出:[1, 2, 3]
}
private static void modifyArray(int[] array) {
array[0] = 10;
}

在这个示例中,modifyArray 方法将更改其参数数组 array 中第一个元素的值,但不会影响 main 方法中原始的 numbers 数组。

按引用传递引用类型

当引用类型数组(如 Object[] 、 String[] 等)作为参数传递时,传递的是数组的实际引用。这意味着对参数数组所做的任何修改都会影响原始数组。public static void main(String[] args) {
String[] names = {"John", "Mary", "Bob"};
modifyArray(names);
((names)); // 输出:[John, Mary, Susan]
}
private static void modifyArray(String[] array) {
array[2] = "Susan";
}

在这个示例中,modifyArray 方法将更改其参数数组 array 中第三个元素的值,也会更改 main 方法中原始的 names 数组。

通过副本强制按值传递

即使对于引用类型,也可以通过创建一个新数组并将其传递给方法来强制按值传递。这可以确保原始数组不被修改。public static void main(String[] args) {
String[] names = {"John", "Mary", "Bob"};
modifyArray((names, ));
((names)); // 输出:[John, Mary, Bob]
}
private static void modifyArray(String[] array) {
array[2] = "Susan";
}

在这个示例中,modifyArray 方法将更改其参数数组 array 中第三个元素的值,但由于传递的是新数组的副本,因此原始 names 数组不受影响。

在 Java 中,基本数据类型的数组按值传递,而引用类型数组按引用传递。通过创建数组副本,可以强制对引用类型数组进行按值传递。

了解数组参数传递的行为对于编写健壮且正确的 Java 代码至关重要。

2024-11-16


上一篇:Java解析JSON数组:分步指南和最佳实践

下一篇:Java 多态:创建灵活、可扩展和可重用的代码