比较java中的数组

Unk*_*ser 6 java arrays compare equals

int [] nir1 = new int [2];
nir1[1] = 1;
nir1[0] = 0;


int [] nir2 = new int [2];
nir2[1] = 1;
nir2[0] = 0;

boolean t = nir1.equals(nir2);
boolean m = nir1.toString().equals(nir2.toString());
Run Code Online (Sandbox Code Playgroud)

为什么m和t都是假的?在Java中比较2个数组的正确方法是什么?

Coo*_*ans 17

使用Arrays.equals方法.例:

boolean b = Arrays.equals(nir1, nir2); //prints true in this case
Run Code Online (Sandbox Code Playgroud)


Fea*_*nor 10

t返回false 的原因是因为数组使用了可用的方法Object.由于这是使用Object#equals(),它返回false因为nir1并且nir2不是同一个对象.

在这种情况下m,同样的想法成立.Object#toString()打印出一个对象标识符.在我的情况下,当我打印出来并检查它们时,结果是

nir1 = [I@3e25a5
nir2 = [I@19821f
Run Code Online (Sandbox Code Playgroud)

当然,这些不一样.

CoolBeans是正确的; 使用静态Arrays.equals()方法来比较它们.