1. 程式人生 > >2018_05_29 Objects中equals和deepEquals的區別

2018_05_29 Objects中equals和deepEquals的區別

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方法,原始碼如下:


可以比較兩個基本資料型別的數值是否相等,而equals方法依舊呼叫的是Object物件中的方法,比較倆個Object物件的地址值是否引用的同一塊地址,如果不同則為false

Objects中還有一個deepEquals(Object x,Object y)的方法,此方法的功能比較強大,不僅可以比較數值是否相同,而且還可以比較兩個物件中的內容是否相同,如果相同即為true,原始碼如下:



e1 instanceof Object[]:判斷e1的型別是否是Object的陣列型別。



舉例如下:

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

String i3[] = i2;

Objects.deepEquals(i1,i2);結果為true.