equals() and ==

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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 閱讀筆記 】

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航