Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類參考

Java 有用資源

Java - 基本運算子



Java 運算子是用於對變數和值執行各種操作的符號。透過使用這些運算子,我們可以執行加法、減法、檢查小於或大於等操作。

Java 中有不同型別的運算子,我們已在下面列出它們 -

  • 算術運算子
  • 關係運算符
  • 按位運算子
  • 邏輯運算子
  • 賦值運算子
  • 其他運算子

Java 算術運算子

算術運算子以與在代數中使用相同的方式用於數學表示式。下表列出了算術運算子 -

假設整數變數 A 保持 10,變數 B 保持 20,則 -

顯示示例

運算子 描述 示例
+ (加法) 將運算子兩側的值相加。 A + B 將得到 30
- (減法) 從左運算元中減去右運算元。 A - B 將得到 -10
* (乘法) 將運算子兩側的值相乘。 A * B 將得到 200
/ (除法) 將左運算元除以右運算元。 B / A 將得到 2
% (模) 將左運算元除以右運算元並返回餘數。 B % A 將得到 0
++ (自增) 將運算元的值增加 1。 B++ 得到 21
-- (自減) 將運算元的值減少 1。 B-- 得到 19

Java 關係運算符

Java 語言支援以下關係運算符。

假設變數 A 保持 10,變數 B 保持 20,則 -

顯示示例

運算子 描述 示例
== (等於) 檢查兩個運算元的值是否相等,如果相等則條件為真。 (A == B) 為假。
!= (不等於) 檢查兩個運算元的值是否相等,如果值不相等則條件為真。 (A != B) 為真。
> (大於) 檢查左運算元的值是否大於右運算元的值,如果大於則條件為真。 (A > B) 為假。
< (小於) 檢查左運算元的值是否小於右運算元的值,如果小於則條件為真。 (A < B) 為真。
>= (大於或等於) 檢查左運算元的值是否大於或等於右運算元的值,如果大於或等於則條件為真。 (A >= B) 為假。
<= (小於或等於) 檢查左運算元的值是否小於或等於右運算元的值,如果小於或等於則條件為真。 (A <= B) 為真。

Java 按位運算子

Java 定義了幾個按位運算子,這些運算子可以應用於整數型別、long、int、short、char 和 byte。

按位運算子作用於位並執行逐位操作。假設如果 a = 60 且 b = 13;現在以二進位制格式,它們將如下所示 -

a = 0011 1100
b = 0000 1101
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a  = 1100 0011

下表列出了按位運算子 -

假設整數變數 A 保持 60,變數 B 保持 13,則 -

顯示示例

運算子 描述 示例
& (按位與) 二進位制 AND 運算子如果位存在於兩個運算元中,則將其複製到結果中。 (A & B) 將得到 12,即 0000 1100
| (按位或) 二進位制 OR 運算子如果位存在於任一運算元中,則將其複製。 (A | B) 將得到 61,即 0011 1101
^ (按位異或) 二進位制 XOR 運算子如果位在一個運算元中設定但不在兩個運算元中都設定,則將其複製。 (A ^ B) 將得到 49,即 0011 0001
⁓ (按位取反) 二進位制一補碼運算子是單目運算子,其作用是“翻轉”位。 (⁓A ) 將得到 -61,由於帶符號二進位制數,因此在 2 的補碼形式中為 1100 0011。
<< (左移) 二進位制左移運算子。左運算元的值向左移動由右運算元指定的位數。 A << 2 將得到 240,即 1111 0000
>> (右移)

二進位制右移運算子。左運算元的值向右移動右運算元指定的位數。 A >> 2 將得到 15,即 1111
>>>(零填充右移) 右移零填充運算子。左運算元的值向右移動右運算元指定的位數,並且移位的數值用零填充。 A >>> 2 將得到 15,即 0000 1111

Java 邏輯運算子

下表列出了邏輯運算子:

假設布林變數 A 為真,變數 B 為假,則:

顯示示例

運算子 描述 示例
&&(邏輯與) 稱為邏輯與運算子。如果兩個運算元都不為零,則條件為真。 (A && B) 為假
||(邏輯或) 稱為邏輯或運算子。如果兩個運算元中任何一個不為零,則條件為真。 (A || B) 為真
!(邏輯非) 稱為邏輯非運算子。用於反轉其運算元的邏輯狀態。如果條件為真,則邏輯非運算子將使其為假。 !(A && B) 為真

賦值運算子

以下是 Java 語言支援的賦值運算子:

顯示示例

運算子 描述 示例
= 簡單賦值運算子。將右側運算元的值賦給左側運算元。 C = A + B 將 A + B 的值賦給 C
+= 加法賦值運算子。將右側運算元加到左側運算元上,並將結果賦給左側運算元。 C += A 等價於 C = C + A
-= 減法賦值運算子。從左側運算元中減去右側運算元,並將結果賦給左側運算元。 C -= A 等價於 C = C − A
*= 乘法賦值運算子。將右側運算元乘以左側運算元,並將結果賦給左側運算元。 C *= A 等價於 C = C * A
/= 除法賦值運算子。將左側運算元除以右側運算元,並將結果賦給左側運算元。 C /= A 等價於 C = C / A
%= 取模賦值運算子。使用兩個運算元進行取模運算,並將結果賦給左側運算元。 C %= A 等價於 C = C % A
<<= 左移賦值運算子。 C <<= 2 等價於 C = C << 2
>>= 右移賦值運算子。 C >>= 2 等價於 C = C >> 2
&= 按位與賦值運算子。 C &= 2 等價於 C = C & 2
^= 按位異或賦值運算子。 C ^= 2 等價於 C = C ^ 2
|= 按位或賦值運算子。 C |= 2 等價於 C = C | 2

Java 其他運算子

Java 語言還支援一些其他運算子。

條件運算子(? :)

條件運算子也稱為**三元運算子**。此運算子包含三個運算元,用於評估布林表示式。運算子的目標是確定應將哪個值賦給變數。運算子寫成:

variable x = (expression) ? value if true : value if false

示例

以下是一個示例:

在此示例中,我們建立了兩個變數 a 和 b,並使用**三元運算子**確定了 b 的值並打印出來。

public class Test {

   public static void main(String args[]) {
      int a, b;
      a = 10;
      b = (a == 1) ? 20: 30;
      System.out.println( "Value of b is : " +  b );

      b = (a == 10) ? 20: 30;
      System.out.println( "Value of b is : " + b );
   }
}

輸出

Value of b is : 30
Value of b is : 20

instanceof 運算子

此運算子僅用於物件引用變數。運算子檢查物件是否為特定型別(類型別或介面型別)。instanceof 運算子寫成:

( Object reference variable ) instanceof  (class/interface type)

如果運算子左側變數引用的物件透過右側類/介面型別的 IS-A 檢查,則結果將為真。以下是一個示例:

示例

在此示例中,我們建立了一個 String 型別的變數 name,然後使用**instanceof 運算子**檢查 name 是否為 String 型別。

public class Test {

   public static void main(String args[]) {

      String name = "James";

      // following will return true since name is type of String
      boolean result = name instanceof String;
      System.out.println( result );
   }
}

輸出

true

如果正在比較的物件與右側的型別賦值相容,則此運算子仍將返回真。以下是一個示例:

示例

在此示例中,我們建立了一個 Vehicle 類型別的變數 a,然後使用**instanceof 運算子**檢查 name 是否為 Car 型別。

class Vehicle {}

public class Car extends Vehicle {

   public static void main(String args[]) {

      Vehicle a = new Car();
      boolean result =  a instanceof Car;
      System.out.println( result );
   }
}

輸出

true

Java 運算子優先順序和結合性

運算子優先順序決定了表示式中項的組合方式。這會影響表示式的計算方式。某些運算子比其他運算子具有更高的優先順序;例如,乘法運算子比加法運算子具有更高的優先順序:

例如,x = 7 + 3 * 2;此處 x 被賦值為 13,而不是 20,因為運算子 * 的優先順序高於 +,所以它首先與 3 * 2 相乘,然後加到 7 中。

在此,優先順序最高的運算子出現在表的最上方,優先順序最低的運算子出現在表的最下方。在表示式中,優先順序較高的運算子將首先計算。

類別 運算子 結合性
字尾 expression++ expression-- 從左到右
一元 ++expression --expression +expression -expression ⁓ ! 從右到左
乘法 * / % 從左到右
加法 + - 從左到右
移位 << >> >>> 從左到右
關係 < > <= >= instanceof 從左到右
相等 == != 從左到右
按位與 & 從左到右
按位異或 ^ 從左到右
按位或 | 從左到右
邏輯與 && 從左到右
邏輯或 || 從左到右
條件 ?: 從右到左
賦值 = += -= *= /= %= ^= |= <<= >>= >>>= 從右到左
廣告