为什么p1的默认值设置为0并且每次递增1

时间:2016-04-04 05:14:13

标签: java arrays lambda integer

当我运行

下面的简单代码段时
Integer[] one = new Integer[10];

Arrays.setAll(one, p1 -> p1 * p1);

System.out.println(Arrays.toString(one));

返回的结果是

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

表示默认值p1从0开始,每次递增1。我只是想知道为什么默认行为是这样设置的,我可以在哪里找到关于这种默认行为的额外读数?

1 个答案:

答案 0 :(得分:4)

您正在使用setAll(int[] array, IntUnaryOperator generator)方法,该方法将传递的一元运算符应用于数组的索引。

因此

one[0] == 0 * 0
one[1] == 1 * 1
one[2] == 2 * 2
...

来自Javadoc:

  

生成器一个接受索引并为该位置生成所需值的函数