”==”和和equals方法究竟有什麼區別?

(1) .==操作符專門用來比較兩個變量的值是否相等,也就是用於比較變量所對應的內存中所存儲的數值是否相同,要比較兩個基本類型的數據或兩個引用變量是否相等,只能用==操作符。如果一個變量指向的數據是對象類型的,那麼,這時候涉及了兩塊內存,對象本身佔用一塊內存(堆內存),變量也佔用一塊內存,例如Objetobj=newObject();變量obj是一個內存,newObject()是另一個內存,此時,變量obj所對應的內存中存儲的數值就是對象佔用的那塊內存的首地址。對於指向對象類型的變量,如果要比較兩個變量是否指向同一個對象,即要看這兩個變量所對應的內存中的數值是否相等,這時候就需要用==操作符進行比較。equals方法是用於比較兩個獨立對象的內容是否相同,就好比去比較兩個人的長相是否相同,它比較的兩個對象是獨立的。

(2) .equals方法是用來比較兩個對象的引用是否相等,即是否指向同一個對象。

(3) .8種基本數據類型的變量,變量直接存儲的是“值”,因此在用關係操作符==來進行比較時,比較的就是 “值” 本身。
1)對於==,如果作用於基本數據類型的變量,則直接比較其存儲的 “值”是否相等;
如果作用於引用類型的變量,則比較的是所指向的對象的地址
2)對於equals方法,注意:equals方法不能作用於基本數據類型的變量
如果沒有對equals方法進行重寫,則比較的是引用類型的變量所指向的對象的地址;諸如String、Date等類對equals方法進行了重寫的話,比較的是所指向的對象的內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章