日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深入理解== 和 equals 的区别

發布時間:2025/3/11 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入理解== 和 equals 的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

深入理解== 和 equals 的本質區別

  • 簡介
    • 區別:
          • 圖解:
    • 注意點:
    • 源碼分析:
    • 總結
    • 分享一波:程序員賺外快-必看的巔峰干貨

簡介

初學者常常被"= =“和‘equals ’所折磨,為什么,因為他們的大概意思相同,都是比較兩個對象是否相等,而又不搞不清他們的具體比較兩個對象相等的原理是什么,所以經常搞混淆,接下來我們就去仔細的剖析他們,真正理解什么時候用”= =",什么時候用equals
先統一看一下他們兩個的區別,知道區別后再仔細研究他們的原理

區別:

==:它存在兩個情況
1.當他比較兩個基本類型時,判斷的時兩個基本類型的類型和值是否相同
2.當他比較兩個引用類型是,判斷的時兩個引用類型的類型和地址是否相同

圖解:

equels:最基本的equels方法其實就是= =,也就是說,最基本的equels也存在兩個情況
1.當他比較兩個基本類型時,判斷的時兩個基本類型的類型和值是否相同
2.當他比較兩個引用類型是,判斷的時兩個引用類型的類型和地址是否相同
也就是說最基本的equels方法和= =完全一樣

注意點:

請看清楚,我這里說的最基本的equels方法,什么是最基本的equels方法?

在這里我們要知道一個知識點:equels方法是Object類的方法,我們再代碼中寫的所有Class類都繼承了Object的equels方法,所以我稱Object類的equels方法是最基本的equels方法

源碼分析:

我們再來看一下Object類的equels方法的源碼

這下明白了吧!Object類的equels方法是直接點用了‘= =’,所以一開始我說:最基本的equels方法和==完全一樣
那我們知道,繼承的一大特點就是實現了java語言的多樣性,而方法重寫則是java語言多樣性的實現原理之一。問題的重要點就在這里,繼承Object類的子類對equels的重寫導致了equels和= =的不同。具體哪里不同,這就要看怎么重寫了。
給大家看一下一個重寫了的,比如String,看圖:

String的重寫equals方法流程是這樣的
第一步:判斷引用地址是否相等,引用地址相等說明他們是同一個對象,說明值肯定相同,返回true
第二部:判斷對象類型是否相同,類型不同,直接返回false
第三步:循環兩個對象的字符,一一對比是否相同,都相同說明值相同,返回true
所以String重寫的equals方法的總目的就是判斷兩個對象的值是否相同。

總結

所以總結下來就是說,==和我們日常用的equals方法哪里不一樣,我們要去看他們怎么重寫的equals方法,看完之后才能知道equals具體是怎么比較的。

分享一波:程序員賺外快-必看的巔峰干貨

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的深入理解== 和 equals 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。