Java 快速導覽 - 運算子

Java 提供多樣、功能完整的運算子 (operator) ,依運算子結合後運算的優先次序,如下列表

名稱優先順序
後綴expr++, expr--
單元++expr, --expr, +expr, -expr, ~, !
乘除*, /, %
加減+, -
位移<<, >>, >>>
關係<, >, <=, >=, instanceof
相等性==, !=
位元且&
位元互斥或^
位元包含或|
邏輯且&&
邏輯或||
條件? :
指派=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=


依功能區分,可分為


算術運算子



Java 的算術運算子 (arithmetic operator) 包含加、減、乘、除、取餘數,皆需兩個運算元構成運算式,如下列表
運算子功能範例
+a + b
-a - b
*a * b
/a / b
%取餘數a % b




單元運算子



Java 的單元運算子 (unary operator) 僅需一個運算元,有表示數字為正負的 + 、 - ,另有遞增運算子 (increment operator) ++ ,遞減運算子 (decrement operator) -- ,以及邏輯補數運算子 (logical compliment operator) ! ,如下列表
運算子功能範例
++a
--a
++遞增++a, a++
--遞減--a, a--
!邏輯補數運算子!a




相等性及關係運算子



Java 的相等性及關係運算子 (equality and Relational Operator) ,比較兩個運算元是否相等或大於小於,結果為布林字面常數 (Boolean literal) ,也就是truefalse ,如下列表
運算子功能範例
==相等a == b
!=不相等a != b
>大於a >= b
>=大於等於a >= b
<小於a < b
<=小於等於a <= b


Java 使用連續兩個等號 == 測試相等性,注意這與一般我們手寫的數學等號 = ,這不一樣喔!




條件運算子



Java 的條件運算子 (conditional operator) ,測試兩個運算元是否都為 true ,或有一個為 true ,另有一個三元運算子,若第一個運算元為 true ,運算結果就是第二個運算元,反之結果為第三個運算元,如下列表
運算子功能範例
&&邏輯且a && b
||邏輯或a || b
?:條件選擇a ? b : c




instanceof 運算子



Java 的 instanceof 運算子 (instanceof operator) ,測試某一物件是否為另一類別 (class) 的子類別 (subclass) ,或是某介面 (interface) 的實作介面,如下列表
運算子功能範例
instanceof測試 b 是不是 a 的子類別或是實作介面a instanceof b




位元運算子



Java 亦提供給整數型態進行逐位元運算的運算子,例如某 16 位元整數如下
0000111100001111


取其補數該整數會變成
1111000011110000


位元運算子 (bitwise operator) ,如下列表
運算子功能範例
~取補數~a
<<保留正負號向左位移a << b
>>保留正負號向右位移a >> b
>>>無正負號向右位移a >>> b
&位元且a & b
^位元互斥或a ^ b
|位元包含或a | b




指派運算子



Java 最基本的指派運算子 (assignment operator) 為單一個等號 = ,這是用來將等號右邊的值拷貝給給左邊的變數資料。等號也可以跟其他運算子合用,會直接將結果儲存到原變數之中,如
運算子功能範例
=指派a = b
+=相加同時指派a += b
-=相減同時指派a -= b
*=相乘同時指派a *= b
/=相除同時指派a /= b
%=取餘數同時指派a %= b
&=位元且同時指派a &= b
^=位元互斥或同時指派a ^= b
|=位元包含或同時指派a |= b
<<=位元向左位移同時指派a <<= b
>>=位元向右位移同時指派a >>= b
>>>=位元無正負號向右位移同時指派a >>>= b


Java 用單一等號 = 表示指派,連續兩個等 == 號表示相等性。




中英文術語對照
運算子operator
算術運算子arithmetic operator
單元運算子unary operator
遞增運算子increment operator
遞減運算子decrement operator
邏輯補數運算子logical compliment operator
相等性及關係運算子equality and Relational Operator
布林字面常數Boolean literal
條件運算子conditional operator
instanceof 運算子instanceof operator
類別class
子類別subclass
介面interface
位元運算子bitwise operator
指派運算子assignment operator








沒有留言: