Java中如何比較兩個數組的內容相等?

錯誤比較:調用數組對象的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)));
    }

}
  • 輸出true

通用的解決方案:使用數組工具類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));
    }

}
  • 輸出true
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章