首頁  >  文章  >  Java  >  java中如何使用if語句判斷字串是否相等

java中如何使用if語句判斷字串是否相等

王林
王林原創
2019-11-27 11:55:0917242瀏覽

java中如何使用if語句判斷字串是否相等

首先分析使用==(注意:Java中= 是賦值運算符,== 是比較是否相等) 和equals()方法來比較兩個字串相等的差異:

==比較的是兩個字串的位址是否為相等(同一個位址),equals()方法比較的是兩個字串物件的內容是否相同(當然,若兩個字串引用同一個位址,使用equals()比較也回傳true)。

推薦相關學習影片:java影片

下面將舉出兩個例子,分析兩種情況下的字串比較問題:

範例1、使用new關鍵字宣告兩個String類型的變數

java中如何使用if語句判斷字串是否相等

#執行程式發現,用equals比較回傳true,用== 比較傳回false。原因如下:

因為== 比較的是兩個字串物件的位址是否相同(是否為同一個位址),當使用new關鍵字建立一個物件的時候,該物件單獨佔據一塊儲存空間,存放llg這個字串的值。所以s1 s2兩個字串雖然值相同,但是儲存的位址不是一個位址。

當使用==來比較的時候,比較的是兩個字串的位址是否是同一個,所以回傳false。但使用equals()方法比較這兩個字串,將會比較兩個字串的值是否相同,所以回傳true。

範例2、正常情況下的字串宣告並定義

java中如何使用if語句判斷字串是否相等

#程式經過運行,發現兩個方式都回傳true 。那麼這是為什麼呢?原因如下:

一般我們認為,堆疊中存放基本類型的變數和物件的參考變量,而new出來的物件和陣列則存放在堆中。然而除此之外還有一塊區域叫做常量池。像我們通常想String s1 = "abc"; 這樣申明的字串對象,其值就是儲存在常數池中。

當我們建立String s1 = "abc"這樣一個物件之後,"abc"就儲存到了常數池中,當我們建立引用String s2 = "abc" 的時候,Java底層會優先在常數池中尋找是否存在"abc",如果存在則讓s2指向這個值,不會重新建立。所以使用 == 比較時,因為位址相同,所以比較的結果是true。

那麼問題回來了,既然是有常數池,是不是字串如果不是new出來的(一般也不會這麼new,宣告字串變數一般像例2這麼寫),那麼這些字串都是從常數池引用同一個對象,所以用== 比較就行了?答案是可以的。

推薦相關文章教學:java入門學習

#

以上是java中如何使用if語句判斷字串是否相等的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn