DESKTOP-IL3AS1R_20200831-陈鑫

问题:

理解a.equals(b)和Arrays.equals(a,b)的区别

public static void main(String[] args) {
        int[] a = new int[] { 1, 2, 3 };
        int[] b = new int[] { 1, 2, 3 };
        System.out.println(System.identityHashCode(a));
        System.out.println(System.identityHashCode(b));
        System.out.println(a == b); // 返回false
        System.out.println(a.equals(b));// 返回false
        System.out.println(Arrays.equals(a, b));// 返回true
    }

== 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象

equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断

Arrays.equals() 方法比较整个数组, 数组相等的条件不仅要求数组元素的个数必须相等,而且要求对应位置的元素也相等。如果两个指定的 int 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。

吐槽:

马上就到9月了

标签

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1