首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 運算符總結:邏輯、位、移位操作符規則與實例

     編輯:Java 綜合教學

Java 運算符總結:邏輯、位、移位操作符規則與實例

Java 提供豐富的運算符,本文系統整理邏輯運算符(&、|、^、!、&&、||)、位運算符(&、|、^、~)、移位操作符(<<、>>、>>>)的真值表、運算規則、二進制演示與常見陷阱,附速查表供開發隨時查閱。

一、邏輯運算符

運算符名稱規則短路特性
&邏輯與全真才真不短路,全部求值
|邏輯或一真即真不短路,全部求值
^邏輯異或不同為真,相同為假不短路
!邏輯非真變假、假變真單目運算符
&&短路與全真才真左假則不算右
||短路或一真即真左真則不算右

效能建議:條件判斷優先使用 && ||,避免不必要的右側運算(如方法呼叫、複雜表達式)。

二、位運算符(直接操作二進制位)

規則口訣:非零即真,1 為 true,0 為 false。

運算符名稱逐位規則範例 (6 & 3)
&位與1&1=1,其餘 0110 & 011 = 010 → 2
|位或0|0=0,其餘 1110 | 011 = 111 → 7
^位異或相同 0,不同 1110 ^ 011 = 101 → 5
~位取反0↔1 翻轉~6 = ...11111001 → -7 (補碼)

補碼與負數表示

  • 正數:最高位 0,其餘為數值。
  • 負數:對應正數 按位取反 + 1(補碼),最高位為 1。
  • 例:-6 → 6 二進制 000...0110 → 取反 111...1001 → +1 → 111...1010。
  • ~n = -(n+1),~-6 = 5。

異或特性應用:簡易加密/交換變數

int a = 10, b = 20;
a = a ^ b; b = a ^ b; a = a ^ b; // 無需第三變數交換
// 加密:data ^ key → 傳輸 → 收端 ^ key 還原

三、移位操作符

運算符名稱規則數學等價範例
<<左移低位補 0,高位丟棄× 2n3 << 2 = 12
>>右移(算術)高位補符號位(正補 0,負補 1)÷ 2n (向下取整)6 >> 2 = 1
>>>無符號右移高位無條件補 0無符號數 ÷ 2n-6 >>> 2 = 1073741822

詳細演示

// 左移
3 (0011) << 2 → 1100 (12)  // 3 * 4 = 12

// 右移(正數)
6 (0110) >> 2 → 0001 (1)   // 6 / 4 = 1

// 右移(負數,算術)
-6 (111...1010) >> 2 → 111...1110 (-2)  // 符號位 1 補齊

// 無符號右移(負數)
-6 (111...1010) >>> 2 → 0011...1110 (1073741822)  // 高位補 0,變大正數

四、運算符優先級速查(高→低)

[] . ()          // 後綴
++ -- ~ !        // 一元
* / %            // 乘除模
+ -              // 加減
<< >> >>>        // 移位
< <= > >=        // 關係
== !=            // 相等
&                // 位與
^                // 位異或
|                // 位或
&&               // 邏輯與
||               // 邏輯或
?:               // 三元
= += -= ...      // 賦值

五、常見陷阱避雷

  1. & | 同時是邏輯與位運算符,操作數為 boolean 時為邏輯,為整數時為位運算。
  2. && || 僅接受 boolean 操作數,不可用於整數。
  3. 移位操作數右側若超過位寬(int 32 位、long 64 位),JVM 取模:shift & 0x1F (int) / shift & 0x3F (long)。
  4. ~ 是一元運算符,優先級高於算術運算符,~a + b 等同 (~a) + b。
  5. 無符號右移 >>> 無 <<< 對應,因左移無符號意義相同。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved