理解Arrays.fill()源码
- 从源码级分析,可以看出Arrays.fill也是循环遍历赋值
public static void fill(long[] a, long val) {
for (int i = 0, len = a.length; i < len; i++)
a[i] = val;
}
注意用Arrays.fill()一维数组填充二维数组修改问题
- 若采用一维数组直接填充二维数组会导致修改二维数组的某个值,对应这一列的数值都会被修改,因为二维数组指向的是同一对象。
- 例如:如果array[0][1]改成0,导致array[1][1],array[2][1],array[3][1], array[4][1]都修改成0。
int[] temp = new int[]{1,2,3,4,5};
int[][] array = new int[4][5];
Arrays.fill(array,temp);