- 變數 (variable)
- 數值 (value)
- 方法呼叫 (method invocation)
運算式會計算出一個結果,通常會是一個數值,因此運算式的結果通常也具有型態。
運算式細分的種類有非常多,我們僅簡單介紹幾種,包括常數運算式、呼叫方法,及利用運算子組成的運算式。
以下程式示範基本運算式 (primary expression) ,也就是直接以基本資料型態 (primitive data type) 的數值當成運算式
class ConstExpr {
public static void main(String[] args) {
if (true) {
System.out.println("Hello, world!");
}
}
}
/* 《程式語言教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:ConstExpr.java
功能:示範基本運算式
作者:張凱慶
時間:西元 2010 年 10 月 */第 3 行
if (true) {if 陳述 (statement) 中的小括弧為條件 (condition) ,須為計算結果為布林值的運算式,這裡直接以布林值 true 代入。 if 同英文字義,如果為真,就會執行底下大括弧中的陳述。
另外,第 4 行呼叫方法也為運算式
System.out.println("Hello, world!");編譯執行這個程式,結果如下

由運算子與運算元所組成的運算式,會依結合規則及優先次序進行計算,全部運算子如下列表
| 名稱 | 優先順序 |
|---|---|
| 後綴 | expr++, expr-- |
| 單元 | ++expr, --expr, +expr, -expr, ~, ! |
| 乘除 | *, /, % |
| 加減 | +, - |
| 位移 | <<, >>, >>> |
| 關係 | <, >, <=, >=, instanceof |
| 相等性 | ==, != |
| 位元且 | & |
| 位元互斥或 | ^ |
| 位元包含或 | | |
| 邏輯且 | && |
| 邏輯或 | || |
| 條件 | ? : |
| 指派 | =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= |
小括弧雖然沒有列在表中,但小括弧具有最高的優先權,因此當運算式中任何部份需要先計算時,可以直接用小括號圍起來,無須考量運算子的優先次序。如以下程式
class ParenExpr {
public static void main(String[] args) {
System.out.println(15 + 2 * 8);
System.out.println(15 + (2 * 8));
System.out.println((15 + 2) * 8);
}
}
/* 《程式語言教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:ParenExpr.java
功能:示範小括弧影響計算的優先次序
作者:張凱慶
時間:西元 2010 年 10 月 */編譯後執行,結果如下

| 中英文術語對照 | |
|---|---|
| 運算式 | expression |
| 運算元 | operand |
| 運算子 | operator |
| 變數 | variable |
| 數值 | value |
| 方法呼叫 | method invocation |
| 基本運算式 | primary expression |
| 基本資料型態 | primitive data type |
| 陳述 | statement |
| 條件 | condition |
參考資料
http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html
http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html
沒有留言:
張貼留言