&和&&的區別?

&和&&的區別?

& 稱爲按位與,是對計算機位的操作,屬於計算機二進制位運算範疇。

&& 稱爲邏輯與,是對boolean值的操作,屬於離散數學範疇。&&運算符是短路與運算。邏輯與跟短路與的差別是非常巨大的,雖然二者都要求運算符左右兩端的布爾值都是true整個表達式的值纔是true。&&之所以稱爲短路運算是因爲,如果&&左邊的表達式的值是false,右邊的表達式會被直接短路掉,不會進行運算。很多時候我們可能都需要用&&而不是&,例如在驗證用戶登錄時判定用戶名不是null而且不是空字符串,應當寫爲:username != null &&!username.equals(""),二者的順序不能交換,更不能用&運算符,因爲第一個條件如果不成立,根本不能進行字符串的equals比較,否則會產生NullPointerException異常。

相似點:&(按位與)和&&(邏輯與)的執行結果一致。

不同點:&(按位與)當第一個條件不滿足時,第二個條件也會進行運算判斷,而&&(邏輯與)當第一個條件不滿足時,第二個條件將不會被執行,直接被短路掉。

程序示例:


public class LogicTest {
	
	public static void main(String[] args) {
		System.out.println(12&24); // 輸出8
		boolean a=true;
		boolean b=false;
		System.out.println(a&b); // 輸出false
		System.out.println(a&&b); // 輸出false
	}

}

 

發佈了135 篇原創文章 · 獲贊 76 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章