&和&&的區別


1.&和&&都可以用作邏輯與的運算符,表示邏輯與(and),當運算符兩邊的表達式的結果都為true時,整個運算結果才為true,否則,只要有一方為false,則結果為false。
2.&&還具有短路的功能,即如果第一個表達式為false,則不再計算第二個表達式,例如,對於if(str != null && !str.equals(“”))表達式,當str為null時,后面的表達式不會執行,所以不會出現NullPointerException如果將&&改為&,則會拋出NullPointerException異常。If(x33 & ++y>0) y會增長,If(x33 && ++y>0)不會增長
3.&還可以用作位運算符,當&操作符兩邊的表達式不是boolean類型時,&表示按位與操作,我們通常使用0x0f來與一個整數進行&運算,來獲取該整數的最低4個bit位,例如,0x31 & 0x0f的結果為0x01。

簡單的說:
&是位運算,返回結果是int型
&&是邏輯運算,返回結果是boolean型

& 不管前面的條件是否正確,后面都執行
&& 前面條件正確時,才執行后面,不正確時,就不執行,就效率而言,這個更好

   擴展:java中&和&&的區別,java中||和|符號的區別
        
    (&,|)它們是邏輯操作,(&&,||)它們是條件操作。
    &是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯運算與(and).
    || 按位或運算符 ,表示按位或運算,||是邏輯或算符,表示邏輯或運算。
    條件操作只能操作布爾型的,而邏輯操作不僅可以操作布爾型,而且可以操作數值型的。
    不同點:
        對於A&B,不管a是否為假,仍然要判斷B。
        對於A|B,不管a是否為真,仍然要判斷B。
        而對於A&&B,A||B在以上情況就不會去判斷B了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM