java中的&和&&有什麼區別

2023-01-06 18:00:35

java中的&和&&的區別:1、&&運運算元在運算時當第一個表示式的值為false時,就不會再計算第二個表示式;而&運運算元則不管第一個表示式的值是否為真都會執行兩個表示式。2、&運運算元可以用作位運運算元,而&&運運算元不可以。

本教學操作環境:windows7系統、java8版、DELL G3電腦。

在Java中&&和&都是表示"與"的邏輯運運算元,也就是and的意思。它們都是當兩邊的表示式都為true的時候,整個運算結果才為true,否則為false。接下來在文章中將為大傢俱體介紹這兩者之間的區別。

&和&&的區別

&和&&都是邏輯運運算元,但&&又叫短路運運算元。因為當第一個表示式的值為false的時候,則不會再計算第二個表示式;

而&則不管第一個表示式是否為真都會執行兩個表示式。另外&還可以用作位運運算元,當&兩邊的表示式不是Boolean型別的時候,&表示按位元操作。

&& 操作

int i = 0;        
if(i == 3  && ++i > 0 )
 {
 }
System.out.println("i = " + i);
登入後複製

結果是:

i = 0
登入後複製

原因:第二個表示式沒有執行

& 操作

 int i = 0;        
 if(i == 3  & ++i > 0 )
  { 
  }
  System.out.println("i = " + i);
登入後複製

結果是:

i = 1
登入後複製

第二個表示式執行了

擴充套件知識:邏輯運運算元

邏輯運運算元把各個運算的關係表示式連線起來組成一個複雜的邏輯表示式,以判斷程式中的表示式是否成立,判斷的結果是 true 或 false。

邏輯運運算元是對布林型變數進行運算,其結果也是布林型,具體如表 1 所示。

表 1 邏輯運運算元的用法、含義及範例
運運算元用法含義說明範例結果
&&a&&b短路與ab 全為 true 時,計算結果為 true,否則為 false。2>1&&3<4true
||a||b短路或ab 全為 false 時,計算結果為 false,否則為 true。2<1||3>4false
!!a邏輯非a 為 true 時,值為 false,a 為 false 時,值為 true!(2>4)true
|a|b邏輯或ab 全為 false 時,計算結果為 false,否則為 true1>2|3>5false
&a&b邏輯與ab 全為 true 時,計算結果為 true,否則為 false1<2&3<5true
  • || 與 | 區別:如果 a 為 true,則不計算 b(因為不論 b 為何值,結果都為 true)

注意:短路與(&&)和短路或(||)能夠採用最佳化的計算方式,從而提高效率。在實際程式設計時,應該優先考慮使用短路與和短路或。

結果為 boolean 型的變數或表示式可以通過邏輯運運算元結合成為邏輯表示式。邏輯運運算元 &&、|| 和 !按表 2 進行邏輯運算。

表 2 用邏輯運運算元進行邏輯運算
aba&&ba||b!a
truetruetruetruefalse
falsetruefalsetruetrue
truefalsefalsetruefalse
falsefalsefalsefalsetrue

邏輯運運算元的優先順序為:!運算級別最高,&& 運算高於 || 運算。!運運算元的優先順序高於算術運運算元,而 && 和 || 運算則低於關係運算子。結合方向是:邏輯非(單目運運算元)具有右結合性,邏輯與和邏輯或(雙目運運算元)具有左結合性。

下面是一些使用邏輯運運算元的範例。

x>0 && x<=100    // 第一行語句
y%4==0 || y%3==0    // 第二行語句
!(x>y)    // 第三行語句
登入後複製

其中,第一行語句用於判斷 x 的值是否大於 0 且小於或等於 100,只有兩個條件同時成立結果才為真(true)。第二行語句用於判斷 y 的值是否能被 4 或者 3 整除,只要有一個條件成立,結果就為真(true)。第三行語句先比較 x 和 y,再將比較結果取反,即如果 x 大於 y 成立,則結果為假(false),否則為真(true)。

更多程式設計相關知識,請存取:!!

以上就是java中的&和&&有什麼區別的詳細內容,更多請關注TW511.COM其它相關文章!