Kotlin - 運算子



運算子是告訴編譯器執行特定數學或邏輯運算的符號。Kotlin 擁有豐富的內建運算子,並提供以下型別的運算子:

  • 算術運算子

  • 關係運算符

  • 賦值運算子

  • 一元運算子

  • 邏輯運算子

  • 位運算

現在讓我們逐一瞭解這些 Kotlin 運算子。

(a) Kotlin 算術運算子

Kotlin 算術運算子用於執行基本的數學運算,例如加法、減法、乘法和除法等。

運算子 名稱 描述 示例
+ 加法 將兩個值相加 x + y
- 減法 從一個值中減去另一個值 x - y
* 乘法 將兩個值相乘 x * y
/ 除法 將一個值除以另一個值 x / y
% 取模 返回除法的餘數 x % y

示例

以下示例演示了使用 Kotlin 算術運算子進行的不同計算

fun main(args: Array<String>) {
   val x: Int = 40
   val y: Int = 20

   println("x + y = " +  (x + y))
   println("x - y = " +  (x - y))
   println("x / y = " +  (x / y))
   println("x * y = " +  (x * y))
   println("x % y = " +  (x % y))
}

執行上述 Kotlin 程式時,將生成以下輸出

x + y = 60
x - y = 20
x / y = 2
x * y = 800
x % y = 0

(b) Kotlin 關係運算符

Kotlin 關係(比較)運算子用於比較兩個值,並返回一個 **布林** 值:**true** 或 **false**。

運算子 名稱 示例
> 大於 x > y
< 小於 x < y
>= 大於或等於 x >= y
<= 小於或等於 x <= y
== 等於 x == y
!= 不等於 x != y

示例

以下示例演示了使用 Kotlin 關係運算符進行的不同計算

fun main(args: Array<String>) {
   val x: Int = 40
   val y: Int = 20

   println("x > y = " +  (x > y))
   println("x < y = " +  (x < y))
   println("x >= y = " +  (x >= y))
   println("x <= y = " +  (x <= y))
   println("x == y = " +  (x == y))
   println("x != y = " +  (x != y))
}

執行上述 Kotlin 程式時,將生成以下輸出

x > y = true
x < y = false
x >= y = true
x <= y = false
x == y = false
x != y = true

(c) Kotlin 賦值運算子

Kotlin 賦值運算子用於為變數賦值。

以下是一個示例,其中我們使用賦值運算子 **=** 將值賦給兩個變數

fun main(args: Array<String>) {
   val x: Int = 40
   val y: Int = 20
   
   println("x = " +  x)
   println("y = " +  y)
}

執行上述 Kotlin 程式時,將生成以下輸出

x = 40
y = 20

以下是一個更復雜的例子,我們使用賦值運算子 **+=** 將自身變數的值相加,然後將其重新賦值給同一個變數

fun main(args: Array<String>) {
   var x: Int = 40

   x += 10
      
   println("x = " +  x)
}

執行上述 Kotlin 程式時,將生成以下輸出

x = 50

以下是所有賦值運算子的列表

運算子 示例 展開形式
= x = 10 x = 10
+= x += 10 x = x - 10
-= x -= 10 x = x - 10
*= x *= 10 x = x * 10
/= x /= 10 x = x / 10
%= x %= 10 x = x % 10

示例

以下示例演示了使用 Kotlin 賦值運算子進行的不同計算

fun main(args: Array<String>) {
   var x: Int = 40

   x += 5
   println("x += 5 = " + x )
   
   x = 40;
   x -= 5
   println("x -= 5 = " +  x)
   
   x = 40
   x *= 5
   println("x *= 5 = " +  x)
   
   x = 40
   x /= 5
   println("x /= 5 = " +  x)
   
   x = 43
   x %= 5
   println("x %= 5 = " + x)
}

執行上述 Kotlin 程式時,將生成以下輸出

x += 5 = 45
x -= 5 = 35
x *= 5 = 200
x /= 5 = 8
x %= 5 = 3

(d) Kotlin 一元運算子

一元運算子只需要一個運算元;它們執行各種操作,例如將值加 1/減 1、否定表示式或反轉布林值。

以下是 Kotlin 一元運算子的列表

運算子 名稱 示例
+ 一元加 +x
- 一元減 -x
++ 加 1 ++x
-- 減 1 --x
! 反轉布林值 !x

示例

以下示例演示了使用 Kotlin 一元運算子進行的不同計算

fun main(args: Array<String>) {
   var x: Int = 40
   var b:Boolean = true

   println("+x = " +  (+x))
   println("-x = " +  (-x))
   println("++x = " +  (++x))
   println("--x = " +  (--x))
   println("!b = " +  (!b))
}

執行上述 Kotlin 程式時,將生成以下輸出

+x = 40
-x = -40
++x = 41
--x = 40
!b = false

這裡,增量 (++) 和減量 (--) 運算子可以用作字首,如 ++x 或 --x,也可以用作字尾,如 x++ 或 x--。這兩種形式的唯一區別在於,如果我們將其用作字首,則運算子將在表示式執行之前應用,但如果將其用作字尾,則運算子將在表示式執行之後應用。

(e) Kotlin 邏輯運算子

Kotlin 邏輯運算子用於確定兩個變數或值之間的邏輯關係。

以下是 Kotlin 邏輯運算子的列表

運算子 名稱 描述 示例
&& 邏輯與 如果兩個運算元都為真,則返回真 x && y
|| 邏輯或 如果任一運算元為真,則返回真 x || y
! 邏輯非 反轉結果,如果運算元為真,則返回假 !x

示例

以下示例演示了使用 Kotlin 邏輯運算子進行的不同計算

fun main(args: Array<String>) {
   var x: Boolean = true
   var y:Boolean = false

   println("x && y = " +  (x && y))
   println("x || y = " +  (x || y))
   println("!y = " +  (!y))
}

執行上述 Kotlin 程式時,將生成以下輸出

x && y = false
x || y = true
!y = true

(e) Kotlin 位運算

Kotlin 沒有位運算子,但 Kotlin 提供了一系列輔助函式來執行位運算。

以下是 Kotlin 位運算函式的列表

函式 描述 示例
shl (bits) 有符號左移 x.shl(y)
shr (bits) 有符號右移 x.shr(y)
ushr (bits) 無符號右移 x.ushr(y)
and (bits) 按位與 x.and(y)
or (bits) 按位或 x.or(y)
xor (bits) 按位異或 x.xor(y)
inv() 按位非 x.inv()

示例

以下示例演示了使用 Kotlin 位運算函式進行的不同計算

fun main(args: Array<String>) {
   var x:Int = 60	  // 60 = 0011 1100  
   var y:Int = 13	  // 13 = 0000 1101
   var z:Int

   z = x.shl(2)       // 240 = 1111 0000
   println("x.shl(2) = " +  z)
   
   z = x.shr(2)       // 15 = 0000 1111
   println("x.shr(2) = " +  z)
   
   z = x.and(y)       // 12 = 0000 1100
   println("x.and(y)  = " +  z)
   
   z = x.or(y)        // 61 = 0011 1101
   println("x.or(y)  = " +  z)
   
   z = x.xor(y)       // 49 = 0011 0001
   println("x.xor(y)  = " +  z)
   
   z = x.inv()        // -61 = 1100 0011
   println("x.inv()  = " +  z)
}

執行上述 Kotlin 程式時,將生成以下輸出

x.shl(2) = 240
x.shr(2) = 15
x.and(y)  = 12
x.or(y)  = 61
x.xor(y)  = 49
x.inv()  = -61

測驗時間 (面試與考試準備)

答案:D

解釋

給定的運算子 % 稱為算術模運算子,返回一個數除以另一個數後的餘數。

題 2 - Kotlin 支援大量的位運算子

A - 正確

B - 不正確

答案:B

解釋

這是不正確的陳述,因為 Kotlin 沒有提供任何位運算子,而是提供了一組函式來執行位運算。

答案:C

解釋

給定的運算子 ++ 在 Kotlin 中稱為一元增量運算子

題 4 - 以下哪個函式將執行按位右移運算?

A - x.ushr(y)

B - x.shr(y)

C - x.shl(y)

D - 以上都不是

答案:B

解釋

函式 x.shr(y) 用於將給定 x 運算元的位向右移動 y 次。

題 5 - 以下哪個是邏輯非運算子

A - inv()

B - !

C - &&

D - ||

答案:B

解釋

是的,運算子 ! 用於反轉運算元的值。

題 6 - 以下 Kotlin 程式碼的輸出是什麼?

fun main(args: Array<String>) {
   var x: Int = 40

   x += 10

   println(x)
}

A - 40

B - 語法錯誤

C - 50

D 以上都不是

答案:C

解釋

這裡給定的運算子 **+=** 是加法賦值運算子,這意味著它等效於 x = x + 10,這將產生 50 的值。

題 7 - 以下 Kotlin 程式碼的輸出是什麼?

fun main(args: Array<String>) {
   var x: Int = 60

   println(x.shr(2))
}

A - 15

B - 語法錯誤

C - 50

D 以上都不是

答案:C

解釋

正確的值是 15,因為 **x.shr(2)** 將使 x 值右移兩位。因此,如果 x 值為 60 = 0011 1100,則右移後將得到 15,即 0000 1111

廣告