1、数组没有做方法参数时,可以直接给数组的引用赋值
2、数组作为方法参数传递时,给数组的引用赋值是无效的,需要分别给每个元素赋值。
其实这些都是java形参和实参的原理。
import java.util.Arrays; public class ArrayTest { public static void main(String[] args){ int[] intArrs = new int[5]; System.out.println(Arrays.toString(intArrs)); //直接给整个数组赋值,有效 int[] intArrs2 = {2,3,4,5}; intArrs = intArrs2; System.out.println(Arrays.toString(intArrs)); //在方法中通过形参给整个数组赋值,无效 apply(intArrs); System.out.println(Arrays.toString(intArrs)); //分别给单个数组元素赋值,有效 apply2(intArrs); System.out.println(Arrays.toString(intArrs)); } /** * 给整个数组赋值 * @param arr */ public static void apply(int[] arr){ int[] intArr = {3,45,43,55,33,55,33}; arr = intArr; } /** * 给数组单个元素赋值 * @param arr */ public static void apply2(int[] arr){ for(int i=0;i<arr.length;i++){ arr[i] = 66; } } }
运行结果:
[0, 0, 0, 0, 0] [2, 3, 4, 5] [2, 3, 4, 5] [66, 66, 66, 66]
可以看出,数组没有作为形参传递时,可以直接给数组的引用赋值;当数组作为方法形参时,直接赋值无效,这时元素单个赋值是有效的。