Java数组的相等

判断两个数组是否相等测试时,可以使用 Arrays.equals()函数 。

public static boolean equals(Object[] a, Object[] a2) 的API文档如下所示:

如果两个指定的对象数组彼此相等 ,则返回true 。 如果两个数组都包含相同数量的元素,则两个数组被认为是相等的,并且两个数组中所有对应的元素对都相等。 如果(e1 == null ? e2 == null : e1.equals(e2)),两个对象e1和e2被认为是相等的 。换句话说,如果两个数组在相同的顺序中包含相同的元素,则它们是相等的。 另外,如果两个数组引用都是null,则两个数组引用被认为是相等的 。

参数
a - 要测试相等的一个数组
a2 - 要进行相等测试的另一个数组

结果
true 如果两个数组相等

Object 类的public boolean equals(Object obj)函数API文档如下所示
在这里插入图片描述

两个数组在相同的顺序中包含相同的元素,则它们是相等的。但是,当需求是元素的成员属性相同则类相同,则需要自己重写equals()函数来覆盖Object.equals()

public class Main {
    public static void main(String[] args) throws Exception {
        
        // 数组中是基本类型 没问题
        int[] ary = {1, 2, 3, 4, 5, 6};
        int[] ary1 = {1, 2, 3, 4, 5, 6};
        int[] ary2 = {1, 2, 3, 4};
        System.out.println("数组 ary 是否与数组 ary1相等? :"
                + Arrays.equals(ary, ary1));
        System.out.println("数组 ary 是否与数组 ary2相等? :"
                + Arrays.equals(ary, ary2));

        // 如果是自己定义的类,虽然实例域相同但是还是输出false
        MyClass[] ary3 = new MyClass[2];
        ary3[0] = new MyClass(0,"a");
        ary3[1] = new MyClass(1,"b");
        MyClass[] ary4 = new MyClass[2];
        ary4[0] = new MyClass(0,"a");
        ary4[1] = new MyClass(1,"b");
        System.out.println("数组 ary3 是否与数组 ary4相等? :"
                + Arrays.equals(ary3, ary4));
    }
}

class MyClass{
    private int myInt;
    private String myStr;
    MyClass(int myInt, String myStr){
        this.myInt = myInt;
        this.myStr = myStr;
    }
}

参考

[1] Cay S. Horstmannn.Java核心技术 卷I 基础知识(原书第10版)[M].机械工业出版社:北京,2017:166.
[2] Java 实例 - 判断数组是否相等

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值