亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

string.equalsIgnoreCase(object.string)

string.equalsIgnoreCase(object.string)

精慕HU 2021-05-06 14:46:57
假設我有一堂課:public class MyClass {    String locale;    public String getLocale(){        return this.locale;    }    public setLocale(String locale){        this.locale = locale;    }}現在我被告知,以下陳述有區別myClass.getLocale().equalsIgnoreCase("en")("en").equalsIgnoreCase(myClass.getLocale())我一直試圖找到它的搜索,但無法做到。有人可以幫我解釋一下兩者之間的區別嗎?執行時間是否有特別的區別?還有這兩個中的哪一個是最佳實踐
查看完整描述

3 回答

?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

該String.equalsIgnoreCase(String)javadoc的狀態:


不考慮大小寫考慮,將此字符串與另一個字符串進行比較。如果兩個字符串的長度相同,并且兩個字符串中的對應字符相等,則忽略大小寫,將它們視為相等的忽略大小寫。


所以這些語句的行為與String.equalsIgnoreCase(String)產生相同結果的相同,String不論是調用者還是自String變量null。


唯一可能不同的是null,在語句中存在引用可能會引發的引用NullPointerException。

在您的示例中,兩條語句可能會拖尾,NullPointerException但可能不在同一位置:


myClass.getLocale().equalsIgnoreCase("en")

    |-----|---- two potential NPE


("en").equalsIgnoreCase(myClass.getLocale())

                            |----- potential NPE

需要注意的是第二種方式是更強大的,如果它只會失敗myClass是null在第一可能會失敗或者myClass或myClass.getLocale()參考null。


總而言之,如果在您的應用程序myClass中不能null,則應堅持第二種方式。

否則,如果myClass可能null,你應該執行null前檢查:


boolean isEqualIgnoreCase = false;

if (myClass != null){

   isEqualIgnoreCase = ("en").equalsIgnoreCase(myClass.getLocale());

}


查看完整回答
反對 回復 2021-05-26
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

myClass.getLocale().equalsIgnoreCase("en")拋出NullPointerExceptionmyClass.locale為空。

("en").equalsIgnoreCase(myClass.getLocale()) 不編譯。

如果您正在談論"en".equalsIgnoreCase(myClass.getLocale()),myClass.locale則為null時可以正常工作。false將被退回。


查看完整回答
反對 回復 2021-05-26
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

我發現的唯一區別是,在第一個示例中,該語句myClass.getLocale()不是null安全的,因此可能會以某種方式返回null并導致NullPointerException。

第二個是安全的,因為您在上調用了一個方法"en"null即使null用來將a傳遞給該方法也不會失敗也不會失敗myClass.getLocale()。


編輯:兩種解釋都假定myClass本身不為null,因此只會getLocale()失敗。在null的情況下,沒有一個解決方案是null安全的myClass-無論如何都會拋出NPE。(@davidxxx)


查看完整回答
反對 回復 2021-05-26
  • 3 回答
  • 0 關注
  • 196 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號