java 和 的區別

2021-06-28 13:19:46 字數 604 閱讀 2967

面試中常常會被問到的,實際開發中可能大家對&&用的比較多點(當然這邊是指大部分),下面談談自己對&和&&的理解。

&和&&都可以用作邏輯與的運算子,表示邏輯與(and),當運算子兩邊的表示式的結果都為true時,整個運算結果才為true,否則,只要有一方為false,則結果為false。

&&還具有短路的功能,即如果第乙個表示式為false,則不再計算第二個表示式,例如:

對於if(str != null && !str.equals(「」))表示式,

當str為null時,後面的表示式不會執行,所以不會出現nullpointerexception如果將&&改為&,則會丟擲nullpointerexception異常。if(x==44 & ++y>0) y會增長,if(x==44 && ++y>0)不會增長

也就是說&前後表示式都會去計算,無論前乙個表示式返回的是true還是false;

&還可以用作位運算子,當&操作符兩邊的表示式不是boolean型別時,&表示按位與操作,我們通常使用0x0f來與乙個整數進行&運算,來獲取該整數的最低4個bit位,實際是將&前後兩個整數轉換成二級制,相同位都是1則為1,相同位是0和1,則為0 例如,

0x31 & 0x0f的結果為0x01。

Java基礎 和 的區別

和 都可以用作邏輯與的運算子,表示邏輯與 and 當運算子兩邊的表示式的結果都為 true 時,整個運算結果才為 true 否則,只要有一方為 false 則結果為 false。還具有短路的功能,即如果第乙個表示式為 false 則不再計算第二個表示式,例如,對於 if str null str.e...

Java 堆和棧的區別

一 預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結...

Java繼承和組合的區別

1 組合 has a 關係可以顯式地獲得被包含類 繼承中稱為父類 的物件,而繼承 is a 則是隱式地獲得父類的物件,被包含類和父類對應,而組合外部類和子類對應。2 組合關係在執行期決定,而繼承關係在編譯期就已經決定了。3 組合是在組合類和被包含類之間的一種松耦合關係,而繼承則是父類和子類之間的一種...