Kotlin - 运算符


运算符是告诉编译器执行特定数学或逻辑操作的符号。Kotlin 内置丰富的运算符,提供以下类型的运算符:

  • 算术运算符

  • 关系运算符

  • 赋值运算符

  • 一元运算符

  • 逻辑运算符

  • 按位运算

现在让我们一一研究一下这些 Kotlin 运算符。

(a) Kotlin 算术运算符

Kotlin 算术运算符用于执行基本的数学运算,例如加法、减法、乘法和除法等。

操作员 姓名 描述 例子
+ 添加 将两个值相加 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 关系(比较)运算符用于比较两个值,并返回一个布尔值:truefalse

操作员 姓名 例子
> 比...更棒 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

下面是另一个例子,我们使用赋值运算符+=来添加 self 变量的值并将其分配回同一个变量:

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、对表达式求反或反转布尔值。

以下是 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 逻辑运算符列表:

操作员 姓名 描述 例子
&& 逻辑和 如果两个操作数都为 true,则返回 true x && y
|| 逻辑或 如果任一操作数为 true,则返回 true x|| y
逻辑非 将结果取反,如果操作数为 true,则返回 false !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(位) 有符号左移 x.shl(y)
shr(位) 有符号右移 x.shr(y)
乌什尔(位) 无符号右移 x.ushr(y)
和(位) 按位和 x 和 (y)
或(位) 按位或 x.or(y)
异或(位) 按位异或 x.xor(y)
反演() 按位取反 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()

——!

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