Java中如何比较两个数组的内容相等?

文章目录

  • 错误比较:调用数组对象的equals方法
  • 对于字符数组,可先转换为String类,再调用equals比较
  • 通用的解决方案:使用数组工具类Arrays

错误比较:调用数组对象的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

你可能感兴趣的:(Java中如何比较两个数组的内容相等?)