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

广告