如何記住 string null 和 string equals 的區別?

時間 2021-05-29 22:55:02

1樓:hasaki

簡而言之,==比較的是不是同乙個物件,equals比較兩個物件長得是不是一樣。

位址一樣,那麼就為同乙個物件,自然長得肯定也一樣(==為true的時候,equals必然為true)

位址不一樣,但是兩個位址存放的內容可能是一樣的(==為false的時候,equals可能為true)

2樓:僅此

對於值型別:「==」比較數值是否相等,值型別沒有equals方法對於引用型別:

如果該型別沒有過載equals方法,則「==」和「equals」方法返回的結果一致,即比較兩個變數引用的位址是否相等

如果過載了equals方法,則equals方法的行為需要看過載方法的具體定義,「==」依然比較的是兩個變數的引用位址

如果則「==」返回true則equals應該也會返回true(正確實現了equals),反之則不一定

3樓:楊軻

剛剛做了乙個涉及到字串判斷的練習題和專案。所以我是那麼記得。

==針對的是整數型別的判斷。equals()針對的是string型別的判斷。

==判斷指定資料是否被儲存於同乙個位址中。而equals()判斷的是不管資料儲存的實體地址相等與否,資料內容是否相等。

string型別的資料每乙個都是儲存在不同的棧中相同內容的string資料都會儲存在不同的位址中所以一定要使用equals().

4樓:

==操作比較的是兩個變數的值是否相等,對於引用型變數表示的是兩個變數在堆中儲存的位址是否相同,即棧中的內容是否相同。 equals操作表示的兩個變數是否是對同乙個物件的引用,即堆中的內容是否相同。

==比較的是2個物件的位址,而equals比較的是2個物件的內容。

顯然,當equals為true時,==不一定為true;

5樓:獨玄

可以看看我寫的筆記http://

6樓:賈小跑

看完這個以後,你絕對可以掌握!

7樓:Jaskey Lam

已有回答的都太複雜了,記住三句話就好了。

1. 語義上:==指的是記憶體引用一樣。equals是指的是邏輯相等。邏輯相等具體的意思由編寫者決定。

2.預設情況下(繼承自Object類),equals和==是一樣的,除非被覆寫(override)了。

public

boolean

equals

(Object

obj)

3. 最典型equals已經被override的例子是String; String中的字串文字相等則視為邏輯相等(s1.equals(s2)==true)。

String#equals:

public

boolean

equals

(Object

anObject)if

(anObject

instanceof

String

)return

true;}

}return

false;}

8樓:余明航

1.在類裡如果沒有重寫equals(),那麼二者沒!有!區!別!比較的內容都是物件的引用,即兩個物件的位址,那麼這種情況下結果永遠是false

2.若是使用String類來建立物件,由於String類裡對equals()進行了重寫(overwrite/override),所以比較的是兩個物件的成員。比如String str1=new Sting(1,2,3)和String str2=new String(1,2,3) 那麼str1.

equals(str2)結果就是true!

9樓:

光記住這兩個區別還不夠,進行大量字串操作的時候,往往用的是StringBuilder和StringBuffer,它們並沒有重寫Object的equals和hashCode方法,equals和==效果完全一樣。

另外打擊一下樓主,連String的equals和==都記不住,恐怕您不太適合程式設計,是不是換個方向比較好?

10樓:李春

樓主自己寫幾次equals就知道equals和==的區別了。

簡單的說==就是比位址或者比數值, equals則是根據定義的規則來判斷兩個object是否相同。

11樓:鬥曉奮

看到==想想背後是怎麼執行的就好。一般我需要另乙個語言的時候,每個東西我都這樣想。這樣有的一些小細節就很容易明白,也就也很容易記住了。

12樓:劍鋒

你後來填加了問題日誌(string==null和string.equals("")的區別)

其實這個區別太大了,它們根本就不是一回事兒。

首先得從賦值講起:

你在進行==或者equals判斷的時候,肯定是先賦值對吧,

string s=null;(這裡是建立乙個s的物件,但是這個物件未指向任何引用)

string s="";(這裡是建立乙個s的物件,但是這個物件指向(「」)乙個空的字串的引用的)

如果string s=null;之後再進行判斷:1.s==null這個返回true, 2.

s==""這個返回false , 3.s.equals("")這裡會丟擲異常,因為equals是對s這個物件指向的引用做的判斷,而s賦值時是沒有指向任何引用的。

如果string s=「」;之後再進行判斷:1.s==null這個返回false, 2.s==""這個返回true,3.string.equals("")這裡true

13樓:

記住很簡單啊:

equals:相同的東西

==:同乙個東西(指代方法不一樣:比如在下,我,本人都是指"我")

14樓:賈志鵬

值型別(int,char,long,boolean等)都是用==判斷相等性。物件引用的話,==判斷引用所指的物件是否是同乙個。equals是Object的成員函式,有些類會覆蓋(override)這個方法,用於判斷物件的等價性。

例如String類,兩個引用所指向的String都是"abc",但可能出現他們實際對應的物件並不是同乙個(和jvm實現方式有關),因此用==判斷他們可能不相等,但用equals判斷一定是相等的。另乙個類似的例子是BigInteger。總體來說要搞清楚,還是需要先理解清楚物件實體和引用之間的關係。

如何記住自己的夢?

那個好人 乙個很簡單的心理學小技巧。醒了的時候身體別動。躺好開始回憶一整個夢,能回憶起大部分的夢境。管不管用可以試完以後再來回覆我哦。 淑妮 以我個人經驗來說,我在參加為期10天的內觀課程期間,每晚做的夢都很栩栩如生,而且每早醒來時一定會記得夢中的每個細節。那時候,白天得靜坐8小時,靜坐時我會跟自己...

如何記住英語動詞短語?

抓住介詞本質,輕鬆搞定片語 天天向上 除了大量閱讀之外,還要專門有系統的去記,根據個人經驗,要抓住兩點,動詞 基本義 比喻義 小品詞 基本義 比喻義 整個短語動詞 基本義 比喻義 動詞相當於詞根,小品詞相當於詞綴。以小品詞up為例,大概有以下含義,1 向上 2 程度加強或強調作用 3 完成 4 出現...

如何讓別人記住自己?

選擇一種或者幾種很少有的習慣 譬如,和朋友一起吃小吃時如果可以加香菜就對攤主說加一塊錢香菜,順便裝作隨意在餐桌上問別人喜不喜歡香菜然後表露出自己十!分!喜!歡!香!菜!去任何大的場合吃飯時,總要帶一瓶小的果粒橙,別人問起來就說沒有它吃不下去飯 在夏天買四件一模一樣的的黑色短袖,兩條一模一樣的的黑色短...