== 與 equals的區別

引入

==

- 基本數據類型(也稱原始數據類型)

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 本文采用總分總的小學生寫作手法較為深入地探究了“==”與“equals()”的區別 :-) 概括 用途:equal...
    廖少少閱讀 2,116評論 18 35
  • == 與equals的主要區別是 == 常用于比較原生類型,而equals()方法用于檢查對象的相等性。另一個不同...
    QM閱讀 1,130評論 0 51
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發崗...
    時芥藍閱讀 42,366評論 11 349
  • 古典風格室清雅,堂上獨特儒家范。略帶花房書滿墻,茗香書香佳麗香。茶易醉人俏姑娘,書看四季花帶嬌。心中有求無大過,偷...
    甘朝武閱讀 209評論 0 0