1. ==
- 对于基础数据类型,如int,float,double类型的值,==比较的是值是否相等。
- 对于引用数据类型,如自定义类实例,String类实例,其比较的是对象实例的地址。
2. equals方法
2.1 Object类的equals方法
Object类中的equals方法用于检测一个对象是否等于另一个对象,默认情况下其比较的是两个对象的哈希值,也就是判断两个对象是否具有相同的引用(地址)。
2.2 Objects类的equals方法
- static boolean equals(Object a, Object b)
如果a和b都为空,返回真;如果只有其中之一为空,则返回假;否则返回a.equals(b); 避免了使用a.equals(b)且a为空时产生的空指针异常。
举例:
1 | package equalstest; |
- static boolean deepEquals(Object a, Object b)
如果对象a和b不是数组的话,则会比较两个对象的地址,否则会比较两个数组对应角标的元素的值(底层使用的Arrays.deepEquals0(Object a, Object b))。比较自定义对象数组时需覆盖equlas方法,否则比较的还是地址。
举例:
1 | private static void equalsTest() { |