Object的equals()方法比较的是对象在内存中的地址是否相同,只有引用同一块地址的时候,才会为true,例如

String a1  = "hello";String a2 = "hello";

a1.equals(a2);结果为true

Person p1 = new Person();

Person p2 = new Person();

p1.equals(p2);结果为false,因为地址并不同


Objects中的equals方法,源代码如下:

2018_05_29 Objects中equals和deepEquals的区别

可以比较两个基本数据类型的数值是否相等,而equals方法依旧调用的是Object对象中的方法,比较俩个Object对象的地址值是否引用的同一块地址,如果不同则为false


Objects中还有一个deepEquals(Object x,Object y)的方法,此方法的功能比较强大,不仅可以比较数值是否相同,而且还可以比较两个对象中的内容是否相同,如果相同即为true,源代码如下:

2018_05_29 Objects中equals和deepEquals的区别

2018_05_29 Objects中equals和deepEquals的区别

e1 instanceof Object[]:判断e1的类型是否是Object的数组类型。

2018_05_29 Objects中equals和deepEquals的区别

2018_05_29 Objects中equals和deepEquals的区别


举例如下:

String i1[] = new String[]{"1","2","4"};
String i2[] = new String[]{"1","2","4"};

String i3[] = i2;

Objects.deepEquals(i1,i2);结果为true.

相关文章:

  • 2021-09-29
  • 2021-11-23
  • 2021-10-23
猜你喜欢
  • 2022-12-23
  • 2021-08-13
  • 2022-12-23
  • 2021-10-16
  • 2018-11-09
  • 2019-05-31
  • 2021-05-18
相关资源
相似解决方案