java中&&和&都是表示與的邏輯運算符,都表示邏輯運輸符and,當兩邊的表達式都為true的時候,整個運算結果才為true,否則為false。
java中&和&&主要區別如下:
&叫做按位與,&直接操作整數基本類型,而&&不行。按位與運算符“&”是雙目運算符。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位都為1時,結果位才為1。參與運算的兩個數均以補碼出現。
例如, 0x31 & 0x0f 的結果為 0x01
&&叫做短路與,&&有短路效應,即:當第一個布爾運算為false,第二個布爾運算不執行。而&運算符沒有。
例如,對于 if(str != null && !str.equals(“”))表達式,當 str 為 null 時,后面的表達式不會執行,所以不會出現 NullPointerException
如果將&&改為&,則會拋出 NullPointerException 異常。 If(x==33 & ++y>0) y 會增長, If(x==33 && ++y>0)不會增長
回答所涉及的環境:聯想天逸510S、Windows 10。
java中&&和&都是表示與的邏輯運算符,都表示邏輯運輸符and,當兩邊的表達式都為true的時候,整個運算結果才為true,否則為false。
java中&和&&主要區別如下:
&叫做按位與,&直接操作整數基本類型,而&&不行。按位與運算符“&”是雙目運算符。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位都為1時,結果位才為1。參與運算的兩個數均以補碼出現。
例如, 0x31 & 0x0f 的結果為 0x01
&&叫做短路與,&&有短路效應,即:當第一個布爾運算為false,第二個布爾運算不執行。而&運算符沒有。
例如,對于 if(str != null && !str.equals(“”))表達式,當 str 為 null 時,后面的表達式不會執行,所以不會出現 NullPointerException
如果將&&改為&,則會拋出 NullPointerException 異常。 If(x==33 & ++y>0) y 會增長, If(x==33 && ++y>0)不會增長
回答所涉及的環境:聯想天逸510S、Windows 10。