假设有一个整型数组 `int[] arr = {5, 2, 8, 1, 9, 4};`,以下哪个操作组合能使 `Arrays.binarySearch(arr, 1)` 返回一个大于等于0的值,并且数组 `arr` 的内容发生改变?

答案解析

A选项中,`Arrays.sort(arr)`会将`arr`排序为 `{1, 2, 4, 5, 8, 9}`,然后 `Arrays.fill(arr, 0, 3, 1);`会将数组前三个元素替换成 1,变成`{1, 1, 1, 5, 8, 9}`。此时`Arrays.binarySearch(arr, 1)`可能返回 0,1或2(取决于实现),但数组确实发生了改变。B选项中,`Arrays.sort(arr)`将 `arr` 排序为`{1, 2, 4, 5, 8, 9}`。然后 `Arrays.sort(arr, 0, 3)` 对前三个元素排序,数组不变。此时`Arrays.binarySearch(arr, 1)`返回0,数组内容没有变化。C选项中,`Arrays.sort(arr, 0, 4)`将前4个元素排序,数组变为`{1, 2, 5, 8, 9, 4}`,此时进行 `Arrays.sort(arr);`排序后,数组变为`{1, 2, 4, 5, 8, 9}`,这时`Arrays.binarySearch(arr, 1)` 返回0。数组也发生了变化。D选项中, `Arrays.fill(arr, 1)` 将数组变为`{1, 1, 1, 1, 1, 1}`,之后使用 `Arrays.sort(arr);`排序后,数组不变,仍然是`{1, 1, 1, 1, 1, 1}`,这时`Arrays.binarySearch(arr, 1)`返回一个大于等于0的值,但数组内容没有变化。本题强调了两个条件,数组内容发生改变,且`Arrays.binarySearch(arr, 1)` 返回值大于等于0,只有A满足两个条件。
正确答案:A
随机推荐
开始刷题