1)如果我设置
int[] set1 = new int[]{1, 2};
int[] set2 = new int[]{1, 2};
当我使用
将它们作为字符串传递时System.out.println(Arrays.toString(set1) == Arrays.toString(set2));
它返回false?
2)有没有办法比较整个数组的相等性而不循环遍历数组的每个索引?
答案 0 :(得分:9)
String
s为Object
s,因此应使用equals
进行比较:
System.out.println(Arrays.toString(set1).equals(Arrays.toString(set2))); //prints true
使用Arrays#equals
来比较数组,请注意,数组必须具有相同的长度且项目必须等于:==
表示基元(int
,{{1} } ...)和long
equals
个引用。)
答案 1 :(得分:4)
==
比较字符串引用,而非值。使用str1.equals(str2)
。 (关于这个here的更多信息;它基本上比较实际对象是否相同,而不是字符串内容)
不,自然如果你想知道每个元素是否相同,你必须遍历所有元素。 Arrays#toString
在幕后也会这样做(如何获得字符串表示?)。
旁注:将数组转换为字符串会引入大量不必要的开销(字符串操作等)。你应该只是循环并比较元素,或创建一个辅助方法(或使用像Arrays#equals
这样的内置方法。)
答案 2 :(得分:2)
使用Arrays.equals比较数组,并查看this进行字符串比较。