在Java中,传递数组作为参数主要有以下几种方式:
按值传递:
传递数组的副本,对副本的修改不会影响原始数组。
按引用传递:
传递数组的引用,对数组的修改会影响原始数组。
使用`varargs`:
允许传递任意数量的参数,参数类型相同。
使用数组类型作为参数:
指定固定长度的数组类型,表示一组相同类型的值。
使用包装类:
对于基本类型数组,使用其包装类(如`Integer[]`)传递。
下面是一些示例代码:
// 按值传递示例public static void changeValue(int[] arr) {arr = 99;}public static void main(String[] args) {int[] arr = {5, 1, 3, 6, 4, 5, 6, 7, 8, 9};System.out.println("传参前arr = " + arr);changeValue(arr);System.out.println("传参后arr = " + arr);System.out.println("---");// 按引用传递示例String[] strArr = {"aa", "bb"};System.out.println("传参前strArr = " + strArr);changeValue(strArr);System.out.println("传参后strArr = " + strArr);System.out.println("---");// 使用varargs示例System.out.println("使用varargs传递int数组:");int[] numbers = {1, 2, 3, 4, 5};printArray(numbers);printArray(1, 2, 3, 4, 5);System.out.println("---");// 使用数组类型作为参数示例System.out.println("使用数组类型作为参数传递int数组:");int[] numbers2 = {1, 2, 3, 4, 5};printArray(numbers2);System.out.println("---");// 使用包装类示例System.out.println("使用包装类传递int数组:");Integer[] numbers3 = {1, 2, 3, 4, 5};printArray(numbers3);System.out.println("---");}public static void printArray(int... arr) {for (int num : arr) {System.out.print(num + " ");}System.out.println();}
请注意,对于基本类型数组,传递引用(即按引用传递)会导致对数组的修改反映在原始数组中,而对于对象数组,传递副本(即按值传递)会导致对数组元素的修改不会影响原始数组。

