Java 快速導覽 - 運算式

程式的許多工作都由運算式 (expression) 完成,所謂的運算式為運算元 (operand) 與運算子 (operator) 所組成的,至少要有運算元。 Java 中的運算元可以是

  • 變數 (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






沒有留言: