equals() and ==

类别:Java 点击:0 评论:0 推荐:

l          equals()與==:

比較物件內容

比較是否同一物件

equals()

==

 

String str1 = new String(“abc”);

String str2 = new String(“abc”);

String str3 = str1;

String str4 = “abc”;

String str5 = “abc”;

 

 

str1 / str2

str1 / str3

str4 / str5

str1 / str4

Equals

true

true

true

true

==

false

true

true

False

 

l           String str = "abc" 跟 String str = new String("abc")在做”==”得到的結果不同。

l     long i = 1; double j = 1; // i == j 為true。(因為primitive data type,值相等即為true)

l           Long a = new Long(3L); Long b = new Long(3L); Double x = new Double(3.0); //a == b為false(因為reference type,非同一個物件了)。//a == x為compile err(因a與x無繼承關係無法convertible)

l           ==的左右兩邊若為不相容的型別轉換,則會發生compiler errors,但若是equals,當物件不相同時equal()會回傳false,不會造成編譯錯誤(equals Float object and Double object will always return false)。

l           compares(equals) a Float object and a Double object which will always return false。

l           每個java class都有一個”equals()”method,這個method是使用”==”來比較兩個reference var所存的值(即是否指向一物件)若要比較content是否相同,必須override equals() method,同時也必須override定義於Object class的”hashcode()”method,否則java collection API操作這個class的object時會錯。

l           String、Date、File及8個wrapper classes都已override equals() method。

如果hashCode值相同,那object”可能”相同(equal);如果hashCode值不相同,那object”一定”不相同。

来自于:【 Garfield 的 SCJP 閱讀筆記 】

本文地址:http://com.8s8s.com/it/it14964.htm