WarSir 发表于 2021-9-8 11:13:33

关于随机将100以内的数放进int数组中的问题

我用同样的方法做了两个随机放100以内的数入int数组中,用"=="和"Array.equals"两种方法进行检查为什么两个数组的元素相同,但是得到的结果均为false,为什么呀?求解。

巴巴鲁 发表于 2021-9-8 18:08:51

你输出了两遍a数组......

连帅帅 发表于 2021-9-10 11:02:07

我觉得你的代码可能写的有点问题,我按照我理解的思路进行了更正(放在了末尾),希望能帮到你
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;
      int[] b = new int;
      for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a.length - 1; j++) {
                a = new Random().nextInt(100);
                if (a == a) {
                  a = 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 = new Random().nextInt(100);
                if (b == b) {
                  b = new Random().nextInt(100);
                }
            }
            Arrays.sort(b);
      }

      for (int i = 0; i < a.length; i++) {
            System.out.print(a + " ");
      }
      System.out.println();

      for (int i = 0; i < b.length; i++) {
            System.out.print(b + " ");
      }
      System.out.println();
      System.out.println(Arrays.equals(a, b));
      System.out.println(a == b);
    }
}

WarSir 发表于 2021-9-18 09:22:37

连帅帅 发表于 2021-9-10 11:02
我觉得你的代码可能写的有点问题,我按照我理解的思路进行了更正(放在了末尾),希望能帮到你
1. == 比较 ...

受教了,感谢解决问题并帮忙完善

WarSir 发表于 2021-9-18 09:24:17

巴巴鲁 发表于 2021-9-8 18:08
你输出了两遍a数组......

噢,对对,谢谢{:5_110:}
页: [1]
查看完整版本: 关于随机将100以内的数放进int数组中的问题