◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
java 中数组作为参数传递时,基本类型数组传递引用,对象数组传递副本。修改基本类型数组会反映在原始数组中,而修改对象数组中的元素则不会。
Java 中数组作为参数传递
在 Java 中,数组作为参数传递的方式取决于传递的数组类型:
基本类型数组 (如 int[] 或 double[])
基本类型数组在 Java 中作为引用类型对待,因此传递基本类型数组时,实际上传递的是指向数组的引用。这意味着对作为参数传递的数组进行的任何修改都会反映在原始数组中。
立即学习“Java免费学习笔记(深入)”;
对象数组 (如 String[] 或 Object[])
对象数组也作为引用类型传递,但与此不同的是,传递的对象数组中元素的副本。因此,对作为参数传递的对象数组中的元素进行的任何修改都不会反映在原始数组中。
数组传递的代码示例
以下是一个 Java 代码示例,演示数组作为参数传递:
public class ArrayPassing { public static void main(String[] args) { // 基本类型数组 int[] numbers = {1, 2, 3}; printArray(numbers); // 输出:1 2 3 // 对作为参数传递的数组进行修改 modifyArray(numbers); printArray(numbers); // 输出:4 5 6 // 对象数组 String[] names = {"John", "Mary", "Bob"}; printArray(names); // 输出:John Mary Bob // 对作为参数传递的对象数组中的元素进行修改 modifyArray(names); printArray(names); // 输出:John Mary Bob } public static void printArray(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); } public static void printArray(String[] arr) { for (String s : arr) { System.out.print(s + " "); } System.out.println(); } public static void modifyArray(int[] arr) { for (int i = 0; i < arr.length; i++) { arr[i] += 3; } } public static void modifyArray(String[] arr) { for (int i = 0; i < arr.length; i++) { arr[i] = arr[i].toLowerCase(); } } }
在这个示例中,printArray 方法演示了打印数组的内容。modifyArray 方法演示了修改作为参数传递的数组。对于基本类型数组,修改是永久性的,而对于对象数组,修改只影响传递的副本。
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。