Dart程式設計 - 運算子



表示式是一種特殊的語句,它會計算出一個值。每個表示式都由以下部分組成:

  • 運算元 - 代表資料

  • 運算子 - 定義如何處理運算元以產生一個值。

考慮以下表達式:“2 + 3”。在這個表示式中,2 和 3 是運算元,符號“+”(加號)是運算子

本章將討論Dart中可用的運算子。

  • 算術運算子
  • 相等性和關係運算符
  • 型別測試運算子
  • 位運算子
  • 賦值運算子
  • 邏輯運算子

算術運算子

下表顯示了Dart支援的算術運算子。

顯示示例

序號 運算子及含義
1 +

2

減法

3 -expr

一元減號,也稱為負號(反轉表示式的符號)

4 *

5 /

6 ~/

整數除法,返回整數結果

7 %

獲取整數除法的餘數(模運算)

8 ++

自增

9 --

自減

相等性和關係運算符

關係運算符測試或定義兩種實體之間的關係型別。關係運算符返回布林值,即true/false。

假設A的值為10,B的值為20。

顯示示例

運算子 描述 示例
> 大於 (A > B) 為False
< 小於 (A < B) 為True
>= 大於或等於 (A >= B) 為False
<= 小於或等於 (A <= B) 為True
== 等於 (A==B) 為False
!= 不等於 (A!=B) 為True

型別測試運算子

這些運算子方便在執行時檢查型別。

顯示示例

運算子 含義
is 如果物件具有指定的型別,則為True
is! 如果物件不具有指定的型別,則為True

位運算子

下表列出了Dart中可用的位運算子及其作用:

顯示示例

運算子 描述 示例
按位與 a & b 對於兩個運算元的對應位都為1的每個位位置,返回1。
按位或 a | b 對於兩個運算元的對應位中至少有一個為1的每個位位置,返回1。
按位異或 a ^ b 對於兩個運算元的對應位中只有一個為1的每個位位置,返回1。
按位非 ~ a 反轉其運算元的位。
左移 a << b 將a的二進位制表示向左移動b(<32)位,從右邊移入零。
帶符號右移 a >> b 將a的二進位制表示向右移動b(<32)位,丟棄移出的位。

賦值運算子

下表列出了Dart中可用的賦值運算子。

顯示示例

序號 運算子及描述
1 =(簡單賦值)

將右側運算元的值賦給左側運算元

:C = A + B 將A + B的值賦給C

2 ??=

僅當變數為null時才賦值

3 +=(加法賦值)

它將右側運算元加到左側運算元,並將結果賦給左側運算元。

:C += A 等效於 C = C + A

4 -=(減法賦值)

它從左側運算元減去右側運算元,並將結果賦給左側運算元。

:C -= A 等效於 C = C – A

5 *=(乘法賦值)

它將右側運算元乘以左側運算元,並將結果賦給左側運算元。

:C *= A 等效於 C = C * A

6 /=(除法賦值)

它將左側運算元除以右側運算元,並將結果賦給左側運算元。

注意 - 位運算子也適用相同的邏輯,因此它們將變為<<=, >>=, &=, |= 和 ^=。

邏輯運算子

邏輯運算子用於組合兩個或多個條件。邏輯運算子返回布林值。假設變數A的值為10,B的值為20。

顯示示例

運算子 描述 示例
&&

- 只有當所有指定的表示式都返回true時,運算子才返回true

(A > 10 && B > 10) 為False。
||

- 如果至少一個指定的表示式返回true,則運算子返回true

(A > 10 || B > 10) 為True。
!

- 運算子返回表示式的結果的反值。例如:!(7>5) 返回false

!(A > 10) 為True。

條件表示式

Dart有兩個運算子,允許你評估可能需要ifelse語句的表示式:

condition ? expr1 : expr2

如果condition為true,則表示式計算expr1(並返回其值);否則,它計算並返回expr2的值。

expr1 ?? expr2

如果expr1非null,則返回其值;否則,計算並返回expr2的值。

示例

以下示例顯示如何在Dart中使用條件表示式:

void main() { 
   var a = 10; 
   var res = a > 12 ? "value greater than 10":"value lesser than or equal to 10"; 
   print(res); 
} 

它將產生以下輸出:

value lesser than or equal to 10

示例

讓我們來看另一個例子:

void main() { 
   var a = null; 
   var b = 12; 
   var res = a ?? b; 
   print(res); 
}

它將產生以下輸出:

12
廣告