組內(nèi)code review時,有同學提到字符串判斷空值的寫法,如下兩種,
(1)null在后,
@Test
public?void?testDemo1()?{
String?str?=?null;
??if?(str?==?null)?{
????System.out.println("null在后");
????return;
??}
}
(2)null在前,
@Test
public void testDemo2() {
String str = null;
if (null == str) {
System.out.println("null在前");
return;
??}
}
這兩種寫法,有什么區(qū)別?
這兩個測試,都可以執(zhí)行,有種解釋是,null放在前面是為了避免少寫一個"=",因為"null="書寫會報錯,防止筆誤寫成"=null",不會報錯,進而漏掉問題。
null==a是以前C語言的寫法,因為C允許if(a=null)這種判斷,但這個其實是少寫了個"=",所以c開發(fā)的人員為了避免這問題,就出現(xiàn)了null==a的寫法,因為這樣一旦漏寫了個=號,編譯器就會編譯不通過。
但這在Java和c#這種面向?qū)ο蟮恼Z言里面是不需要的,因為少個=號,不管java還是C#都是編譯錯誤。
因此,Java中對null進行判斷放在前后沒有什么區(qū)別,只是為了代碼規(guī)范,為了避免寫代碼時書寫錯誤(建議將null放在前面,并不強制)。
順帶說下,Java中判斷字符串是否為空的四種方法,
方法一:最多人使用的一個方法,直觀,方便,但效率很低,
if(s == null || s.equals(""));
方法二:比較字符串長度,效率高
if(s == null || s.length() == 0);
方法三:Java SE 6.0才開始提供的方法,效率和方法二幾乎相等,但出于兼容性考慮,推薦使用方法二,
if(s == null || s.isEmpty());
方法四:這是一種比較直觀,簡便的方法,而且效率也非常的高,與方法二、三的效率差不多,
if (s == null || s == "");
注意,s == null這個判斷是有必要存在的,如果String類型為null,進行equals(String)或length()等操作會拋出java.lang.NullPointerException。而且s==null的順序必須出現(xiàn)在前面,不然同樣會拋出java.lang.NullPointerException。
如果您認為這篇文章有些幫助,還請不吝點下文章末尾的"點贊"和"在看",或者直接轉發(fā)pyq,
近期更新的文章:
《MySQL新身份驗證插件caching_sha2_password》
《金融知識小科普 - 北向資金》
《MySQL的MVCC再學習》
《金融知識小科普 - 寬基指數(shù)》
《能從家中看球的球場》
近期的熱文:
《"紅警"游戲開源代碼帶給我們的震撼》
文章分類和索引:文章來源:http://www.zghlxwxcb.cn/news/detail-644966.html
《公眾號1100篇文章分類和索引》文章來源地址http://www.zghlxwxcb.cn/news/detail-644966.html
到了這里,關于Java判斷null的幾種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!