標籤:++ blog 左右 ati 基礎 poi 運算 out []
&與&&都是邏輯與
不同的是&左右兩邊的判斷都要進行,而&&是短路與,當&&左邊條件為假則不用再判斷右邊條件,所以效率更高
例如,對於if(str != null && !str.equals(“”))運算式,當str為null時,後面的運算式不會執行,所以不會出現NullPointerException如果將&&改為&,則會拋出NullPointerException異常。If(x==33 & ++y>0) y會增長,If(x==33 && ++y>0)不會增長
&還可以用作位元運算符,當&操作符兩邊的運算式不是boolean類型時,&表示按位與操作,我們通常使用0x0f來與一個整數進行&運算,來擷取該整數的最低4個bit位,例如,0x31 & 0x0f的結果為0x01。
package com.swift;public class And_Test { public static void main(String[] args) { /* * & 和 && */ String str=null; if(str != null & !str.equals("")) { System.out.println("有異常了,因為str沒有開闢空間"); } }}
按位與
package com.swift;public class And_Test { public static void main(String[] args) { /* * & 和 && */ String str=null; if(str != null && !str.equals("")) { System.out.println("有異常?"); } System.out.println(Integer.toHexString(0x3a + 0x45)); System.out.println(Integer.toHexString(0x31 & 0x0f)); }}
java基礎面試題:說說&和&&的區別