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()方法来比较它们.
| 归档时间: |
|
| 查看次数: |
2792 次 |
| 最近记录: |