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

Java 運算符優先級與結合性完整表:從單目到賦值的求值順序

     編輯:Java 綜合教學

Java 運算符優先級與結合性完整表

理解運算符優先級與結合性,是寫出正確表達式、避免邏輯 Bug 的基礎。Java 遵循「高優先級先算、同級看結合性」原則。

一、優先級表(由高到低)

優先級運算符說明結合性
1[] . ()數組訪問、成員訪問、方法調用、括號左→右
2++ -- + - ~ !後置/前置自增減、正負號、位非、邏輯非右→左
3* / %乘除取模左→右
4+ -加減 / 字符串連接左→右
5<< >> >>>左移、有符號右移、無符號右移左→右
6< <= > >= instanceof關係比較、類型檢查左→右
7== !=相等性比較左→右
8&按位與 / 邏輯與(不短路)左→右
9^按位異或 / 邏輯異或左→右
10|按位或 / 邏輯或(不短路)左→右
11&&短路邏輯與左→右
12||短路邏輯或左→右
13? :三元條件運算符右→左
14= += -= *= /= %= &= ^= |= <<= >>= >>>=賦值及復合賦值右→左
15->Lambda 箭頭 (Java 8+)右→左

二、關鍵結合性規則

  • 左結合(左→右):多數二元運算符(算術、移位、比較、位運算、短路邏輯)。a - b - c ≡ (a - b) - c。
  • 右結合(右→左):
    • 單目運算符:++x --x +x -x ~ !
    • 賦值運算符:a = b = c = 1 ≡ a = (b = (c = 1))
    • 三元運算符:a ? b : c ? d : e ≡ a ? b : (c ? d : e)
    • Lambda 箭頭。

三、經典易錯案例

// 1. 自增減陷阱
int x = 5;
int y = x++ + ++x; // 步驟:x++ 用 5 → x=6;++x 先增 → x=7 用 7;y=5+7=12

// 2. 賦值右結合
int a, b, c;
a = b = c = 10; // c=10 → b=10 → a=10

// 3. 三元嵌套
int score = 85;
String level = score >= 90 ? "優" : score >= 60 ? "良" : "差"; // 正確嵌套

// 4. 短路邏輯副作用
boolean flag = true || (++x > 0); // || 短路,++x 不執行,x 不變

// 5. 字符串連接優先級
System.out.println("結果:" + 1 + 2);      // "結果:12"
System.out.println("結果:" + (1 + 2));    // "結果:3"
System.out.println(1 + 2 + " 是結果");     // "3 是結果"

四、最佳實踐:善用括號

**當優先級不確定時,加括號**。括號不僅改變求值順序,更是給維護代碼的人(包括未來的自己)看的文檔。編譯器會優化掉多餘括號,**零運行時開銷**。

							
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved