引入
==
- 基本數據類型(也稱原始數據類型)
byte, short, char, int long, float, double, boolean, ?== 比較的是他們的值
- 復合數據類型(類): 當他們用(==)進行比較的時候,比較的是他們在內存中的存放地址(確切的說,是堆存放地址)
注:?
? ? 每次new一次,都會重新開辟堆內存空間
equals
- Java當中所有的類都是繼承于Object這個超類的,在Object類中定義一個eqauls的方法,這個方法的初始行為是比較對象的內存地址,但在一些類庫當中這個方法被復寫了,如String,Integer,Data。在這些類中equals有其自身的實現,而不再是比較類在堆內存中的存放地址了
-- 對于復合數據類型之間進行equals比較,在沒有覆寫equals方法的情況下,他們之間的比較還是內存中的存放位置的地址值,跟雙等號(==)的結果相同;如果被復寫,按照復寫的要求來。
小結:?
“==”比較的是值【變量(棧)內存中存放的對象的(堆)內存地址】equal用于比較兩個對象的值是否相同【不是比地址】【特別注意】Object類中的equals方法和“==”是一樣的,沒有區別,而String類,Integer類等等一些類,是重寫了equals方法,才使得equals和“==不同”,所以,當自己創建類時,自動繼承了Object的equals方法,要想實現不同的等于比較,必須重寫equals方法。"=="比"equal"運行速度快,因為"=="只是比較引用.
鏈接:http://www.lxweimin.com/p/5ffcf937a5b1