1.&和&&的區別
1)&和&&都可以用作邏輯與的運算符,表示邏輯與(and),當運算符兩邊的表達式的結果都為true時,整個運算結果才為true,否則只要一方為false,則結果為false。
2)&&運算符還具有短路功能,如果&&左邊的表達式值為false,右邊的表達式會被短路掉,不會參與運算。很多時候我們可能都需要用&&而不是&,例如在驗證用戶登錄時判定用戶名不是null而且不是空字符串,應當寫為:username != null &&!username.equals(“”),二者的順序不能交換,更不能用&運算符,因為第一個條件如果不成立,根本不能進行字符串的equals比較,否則會產生NullPointerException異常。
3)&還可以做位運算,當表達式兩邊不是boolean類型時,&進行位運算。
2.|和||的區別
1)|和||都可以用作邏輯或的運算符,表示邏輯或(or),當運算符兩邊的表達式的結果其中一個為true時,真個運算結果為true。
2)||運算符還具有短路功能,如果||左邊的表達式值為true,右邊的表達式會被短路掉,不會參與或運算。
3)|還可以做位運算,當表達式兩邊不是boolean類型時,|進行位運算。