錯誤比較:調用數組對象的equals方法
public class ArrayTest {
public static void main(String[] args) {
char[] a = new char[2];
a[0] = 'a';
a[1] = 'b';
char[] b = new char[2];
b[0] = 'a';
b[1] = 'b';
System.out.println(a.equals(b));
}
}
- 輸出
false
- 原因很簡單,數組對象繼承
Object
類,Object
類中的equals
方法比較的是對象地址
對於字符數組,可先轉換爲String類,再調用equals比較
public class ArrayTest {
public static void main(String[] args) {
char[] a = new char[2];
a[0] = 'a';
a[1] = 'b';
char[] b = new char[2];
b[0] = 'a';
b[1] = 'b';
System.out.println((new String(a)).equals(new String(b)));
}
}
通用的解決方案:使用數組工具類Arrays
public class ArrayTest {
public static void main(String[] args) {
char[] a = new char[2];
a[0] = 'a';
a[1] = 'b';
char[] b = new char[2];
b[0] = 'a';
b[1] = 'b';
System.out.println(Arrays.equals(a, b));
}
}