Kotlin 入门教程:运算符

本文介绍 Kotlin 运算符,包括数学运算、布尔运算以及一些特殊运算。所有代码均可在Kotlin 官方在线代码调试器运行,部分代码下方也会提供链接直达。

专栏《零基础入门 Kotlin》持续更新中,欢迎订阅!



运算符是用来执行特定任务或运算的符号,如加法、减法、比较等。Kotlin 支持多种运算符,包括但不限于算术运算符、比较运算符、逻辑运算符、位运算符等。

1. 算术运算符

算术运算符用于执行数学运算,如加法、减法、乘法、除法等:

val a = 10
val b = 5
val sum = a + b // 加法
val difference = a - b // 减法
val product = a * b // 乘法
val quotient = a / b // 除法
val remainder = a % b // 取模

可以将赋值和算数运算符结合:

val a = 10
a += 5 // 相当于 a = a + 5

自增自减运算符:

var a = 10
a++ // 相当于 a += 1
++a // 相当于 a += 1
a-- // 相当于 a -= 1
--a // 相当于 a -= 1

自增自减运算符的位置不同,有不同的效果:

var a = 10
println(a++) // 输出 10,先返回a的值,再自增,执行后a的值为11
println(++a) // 输出 12,先自增,再返回a的值,执行后a的值为12
println(a--)  // 输出 12,先返回a的值,再自减,执行后a的值为11
println(--a)  // 输出 10,先自减,再返回a的值,执行后a的值为10

运行代码

2. 比较运算符

比较运算符用于比较两个值并返回布尔结果(true 或 false)。

val a = 10
val b = 5
println(a == b) // 等于
println(a != b) // 不等于
println(a > b) // 大于
println(a < b) // 小于
println(a >= b) // 大于等于
println(a <= b) // 小于等于

3. 逻辑运算符

逻辑运算符用于组合条件表达式的结果。

val a = 10
val b = 5
println(a > b && a != b) // 逻辑与(AND)
println(a > b || a == b) // 逻辑或(OR)
println(!(a > b)) // 逻辑非(NOT)

4. 位运算符

位运算符用于按位执行二进制数的操作。

val a = 10 // 二进制表示为 1010
val b = 5 // 二进制表示为 0101
println(a and b) // 按位与
println(a or b) // 按位或
println(a xor b) // 按位异或
println(a shl 1) // 左移
println(a shr 1) // 有符号右移
println(a ushr 1) // 无符号右移
println(~a) // 按位取反

5. 赋值运算符

赋值运算符用于将一个值赋给一个变量。

var x = 10
x += 5 // 相当于 x = x + 5
println(x) // 输出 15
x -= 3 // 相当于 x = x - 3
println(x) // 输出 12
x *= 2 // 相当于 x = x * 2
println(x) // 输出 24
x /= 4 // 相当于 x = x / 4
println(x) // 输出 6
x %= 3 // 相当于 x = x % 3
println(x) // 输出 0

6. 范围运算符

范围运算符用于创建数值范围并检查是否在范围内。

val number = 5
println(number in 1..10) // 检查数字是否在 1 到 10 的范围内
println(number !in 10..20) // 检查数字是否不在 10 到 20 的范围内

7. 安全调用运算符

对值为 null 的对象操作容易会引起空指针异常,所以在程序中一般要避免 对 null 值的对象进行操作,安全调用运算符(?.)用于避免空指针异常。

val nullableString: String? = null
println(nullableString?.length) // 如果 nullableString 是 null,则结果为 null

这段代码声明了一个可能为 nullString 类型变量 nullableString 并将其初始化为 null。然后尝试打印这个变量的长度属性 length

  • nullableString 是一个可空引用类型(String?),意味着它可以指向一个 String 实例,也可以指向 null
  • nullableString?.length 使用了 安全调用运算符 (?.),这意味着如果 nullableStringnull,那么 length 属性不会被调用,整个表达式的结果将是 null

如果不使用安全调用运算符 (?.),代码将会是这样的:

val nullableString: String? = null
println(nullableString.length) // 编译错误

在这种情况下,编译器会报错,因为它无法确定 nullableString 是否为 null。如果直接调用 nullableString.length,而在 nullableStringnull 的情况下,Kotlin 编译器会在编译阶段阻止这种潜在的空指针异常(NullPointerException),因为直接调用 length 会导致运行时错误。

如果 nullableStringnull 并且没有使用安全调用运算符,那么在运行时将会抛出 空指针异常 (NullPointerException),这会导致程序崩溃。

8. Elvis 操作符

Elvis 操作符也用于防止空指针异常

Elvis 操作符(?:)在 Kotlin 中用于提供一个默认值,当左侧的表达式为 null 时,右侧的表达式会被求值并作为整体表达式的结果。

val nullableString: String? = null
val length = nullableString?.length ?: "默认值"
println(length) // 输出 "默认值"

上述代码使用 Elvis 操作符 (?:) 来提供一个默认值。如果 nullableString?.length 的值不是 null,则返回该值。如果 nullableString?.length 的值为 null,则返回字符串 "默认值"


参考资料

  1. Kotlin 官方文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值