我觉得你的代码可能写的有点问题,我按照我理解的思路进行了更正(放在了末尾),希望能帮到你
1. == 比较好理解,数组使用==比较的是内存地址,题中两个数组是前后new出来的,在堆中是不同的内存地址,所以比较结果为false;
2.Arrays.equals(a, b),我们看这个方法的源码
- package excel;
- import org.apache.thrift.TException;
- import java.io.IOException;
- import java.util.Arrays;
- import java.util.Random;
- public class Test {
- public static void main(String[] args) throws TException, IOException {
- int[] a = new int[8];
- int[] b = new int[8];
- for (int i = 0; i < a.length; i++) {
- for (int j = 0; j < a.length - 1; j++) {
- a[j] = new Random().nextInt(100);
- if (a[j] == a[j + 1]) {
- a[j] = new Random().nextInt(100);
- }
- }
- Arrays.sort(a);
- }
- for (int j = 0; j < b.length; j++) {
- for (int i = 0; i < b.length - 1; i++) {
- b[i] = new Random().nextInt(100);
- if (b[i] == b[i + 1]) {
- b[i] = new Random().nextInt(100);
- }
- }
- Arrays.sort(b);
- }
- for (int i = 0; i < a.length; i++) {
- System.out.print(a[i] + " ");
- }
- System.out.println();
- for (int i = 0; i < b.length; i++) {
- System.out.print(b[i] + " ");
- }
- System.out.println();
- System.out.println(Arrays.equals(a, b));
- System.out.println(a == b);
- }
- }
复制代码