Java 運算符||和&&都具有短路效果

第一次接觸公司項目的時候看到一段代碼 ,感覺會有問題

if (list == null || list.isEmpty()) {
   list = productBrandMapper.findList(2);
   redisUtils.setex(key, list, 60 * 30);
}

如果 list爲null值,那麼list.isEmpty()時會報java.lang.NullPointerException空指針異常,

但是運行了幾次都是沒有問題的,之前只知道&&有短路效果,百度之後發現,||和&&運算符都是具有短路效果

舉個例子,

a=1 b=2 所以 a>0 這個值爲true b>1 這個值爲true b>2 這個值爲 false

如 if(a>0&b>1) 我們可以得出 if(true&true),條件成立(true不爲0,所以true&true不爲0)

如 if(a>0&&b>1) 我們可以得出 if(true&&true),條件成立(&&兩邊操作數都非零,所以條件成立)

如 if(b>2&a>0) 我們可以得出 if(false&true),條件不成立(false爲0,false&true爲0,條件不成立)

如 if(b>2&&a>0) 我們可以得出 if(false&&a>0),條件不成立(&&左側爲false,&&運算到此結束,條件不成立)

如果是||和|會有不一樣的效果

 還有一點重要的,i=1在C語言中是有返回值的,而在Java中是沒有的,在if判斷中出現賦值操作是會報錯的

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章