使用Arrays.fill()方法把数组的第3到第6个的元素的值改为6
示例代码
public static void main(String[] args) {
int[] array = {1, 3, 4, 2, 5, 7, 0, 3};
System.out.println("修改前" + Arrays.toString(array));
Arrays.fill(array, 2, 6, 6);
System.out.println("修改后" + Arrays.toString(array));
}
输出结果如下:
可以发现数组的第3到第6个的元素的值都被改为6了
看看Arrays.fill()的源码了解下
public static void fill(int[] a, int fromIndex, int toIndex, int val) {
rangeCheck(a.length, fromIndex, toIndex);
for (int i = fromIndex; i < toIndex; i++)
a[i] = val;
}
可以发现,内部其实也是做个循环,把大于等于fromIndex,和小于toIndex之间的下标都赋值为val。
总结
要是由开发自己来实现这个需求的话,估计也是用循环来做,但是像一些严谨的逻辑判断,往往会被忽视掉,而如果使用Arrays.fill()方法的话,会先有一层判断逻辑,如下:
private static void rangeCheck(int arrayLength, int fromIndex, int toIndex) {
if (fromIndex > toIndex) {
throw new IllegalArgumentException(
"fromIndex(" + fromIndex + ") > toIndex(" + toIndex + ")");
}
if (fromIndex < 0) {
throw new ArrayIndexOutOfBoundsException(fromIndex);
}
if (toIndex > arrayLength) {
throw new ArrayIndexOutOfBoundsException(toIndex);
}
}
这样可以规避一些错误,代码也是给人用的,不要把自己的习惯套在别人身上,可能你会这样操作,别人却是不一样的思路,像我公司的测试,脑回路就很奇葩,往往想的是常人所想不到的,这时候,代码的严谨就很关键了,所以下次再碰到某种需求时想想JDK是不是已经帮我们封装好了这种实现,或者想想是不是有现成的工具类可以使用,不要重复造轮子,同时学会选择好轮子来使用。