运算符是对操作数(变量和值)进行运算的特殊符号(字符)。例如, +
是执行加法的运算符 。
在Java变量文章中,您学习了声明变量并为变量赋值。现在,您将学习使用运算符对它们执行各种操作。
1.算术运算符
以下是Kotlin中的算术运算运算符列表:
Operator | Meaning |
---|---|
+ | Addition (also used for string concatenation) |
– | Subtraction Operator |
* | Multiplication Operator |
/ | Division Operator |
% | Modulus Operator |
示例:算术运算符
fun main(args: Array) {
val number1 = 12.5
val number2 = 3.5
var result: Double
result = number1 + number2
println("number1 + number2 = $result")
result = number1 - number2
println("number1 - number2 = $result")
result = number1 * number2
println("number1 * number2 = $result")
result = number1 / number2
println("number1 / number2 = $result")
result = number1 % number2
println("number1 % number2 = $result")
}
运行该程序时,输出为:
number1 + number2 = 16.0
number1 - number2 = 9.0
number1 * number2 = 43.75
number1 / number2 = 3.5714285714285716
number1 % number2 = 2.0
+
运算符还用于String
值的串联。
示例:字符串的串联
fun main(args: Array) {
val start = "Talk is cheap. "
val middle = "Show me the code. "
val end = "- Linus Torvalds"
val result = start + middle + end
println(result)
}
运行该程序时,输出为:
Talk is cheap. Show me the code. - Linus Torvalds
算术运算运算符实际上如何工作?
假设您正在使用+
算术运算运算符将两个数字a和b相加。
在a.plus(b)
,表达式a + b
调用a.plus(b)
成员 函数。 plus
运算符被重载以使用String
值和其他基本数据类型(Char和Boolean除外)。
// + operator for basic types
operator fun plus(other: Byte): Int
operator fun plus(other: Short): Int
operator fun plus(other: Int): Int
operator fun plus(other: Long): Long
operator fun plus(other: Float): Float
operator fun plus(other: Double): Double
// for string concatenation
operator fun String?.plus(other: Any?): String
您还可以使用+
运算符通过重载plus()
函数来处理用户定义的类型(如对象)。
推荐读物: Kotlin操作员重载
这是算术运算运算符及其对应函数的表:
Expression | Function name | Translates to |
---|---|---|
a + b | plus | a.plus(b) |
a – b | minus | a.minus(b) |
a * b | times | a.times(b) |
a / b | div | a.div(b) |
a % b | mod | a.mod(b) |
2.赋值运算符
赋值运算符用于为变量赋值。之前我们已经使用了简单的赋值运算符 =
。
val age = 5
在这里,使用=
运算符将5分配给可变年龄 。
以下是所有赋值运算符及其对应功能的列表:
Expression | Equivalent to | Translates to |
---|---|---|
a +=b | a = a + b | a.plusAssign(b) |
a -= b | a = a – b | a.minusAssign(b) |
a *= b | a = a * b | a.timesAssign(b) |
a /= b | a = a / b | a.divAssign(b) |
a %= b | a = a % b | a.modAssign(b) |
示例:赋值运算符
fun main(args: Array) {
var number = 12
number *= 5 // number = number*5
println("number = $number")
}
运行该程序时,输出为:
number = 60
推荐读物: Kotlin中的重载赋值运算符 。
3.一元前缀和增量/减量运算符
这是一元运算运算符,它们的含义和相应功能的表:
Operator | Meaning | Expression | Translates to |
---|---|---|---|
+ | Unary plus | +a | a.unaryPlus() |
– | Unary minus (inverts sign) | -a | a.unaryMinus() |
! | not (inverts value) | !a | a.not() |
++ | Increment: increases value by1 | ++a | a.inc() |
— | Decrement: decreases value by 1 | –a | a.dec() |
示例:一元运算符
fun main(args: Array) {
val a = 1
val b = true
var c = 1
var result: Int
var booleanResult: Boolean
result = -a
println("-a = $result")
booleanResult = !b
println("!b = $booleanResult")
--c
println("--c = $c")
}
运行该程序时,输出为:
-a = -1
!b = false
--c = 0
推荐读物: 重载一元运算符
4.比较和平等算子
这里的平等和比较运算符,它们的意义和相应的功能的表:
Operator | Meaning | Expression | Translates to |
---|---|---|---|
> | greater than | a > b | a.compareTo(b) > 0 |
< | less than | a < b | a.compareTo(b) < 0 |
>= | greater than or equals to | a >= b | a.compareTo(b) >= 0 |
<= | less than or equals to | a < = b | a.compareTo(b) <= 0 |
== | is equal to | a == b | a?.equals(b) ?: (b === null) |
!= | not equal to | a != b | !(a?.equals(b) ?: (b === null)) |
比较和相等运算符用于控制流,例如if表达式 , when表达式和循环 。
示例:比较和相等运算符
fun main(args: Array) {
val a = -12
val b = 12
// use of greater than operator
val max = if (a > b) {
println("a is larger than b.")
a
} else {
println("b is larger than a.")
b
}
println("max = $max")
}
运行该程序时,输出为:
b is larger than a.
max = 12
推荐读物: Kotlin中比较和相等运算符的重载
5.逻辑运算符
有在科特林两个逻辑运算符 : ||
和&&
这是逻辑运算符,它们的含义和相应功能的表。
Operator | Description | Expression | Corresponding Function |
---|---|---|---|
|| | true if either of the Boolean expression is true |
(a>b)||(a |
(a>b)or(a |
&& | true if all Boolean expressions are true |
(a>b)&&(a |
(a>b)and(a |
请注意, or
和and
是支持中缀表示法的函数。
逻辑运算符用于控制流,例如if表达式 , when表达式和循环 。
示例:逻辑运算符
fun main(args: Array) {
val a = 10
val b = 9
val c = -1
val result: Boolean
// result is true is a is largest
result = (a>b) && (a>c) // result = (a>b) and (a>c)
println(result)
}
运行该程序时,输出为:
true
推荐读物: Kotlin中逻辑运算符的重载
6.在运算符中
in
运算符用于检查对象是否属于集合。
Operator | Expression | Translates to |
---|---|---|
in | a in b | b.contains(a) |
!in | a !in b | !b.contains(a) |
示例:在运算符中
fun main(args: Array) {
val numbers = intArrayOf(1, 4, 42, -3)
if (4 in numbers) {
println("numbers array contains 4.")
}
}
运行该程序时,输出为:
numbers array contains 4.
推荐读物: Kotlin在操作员重载中
7.索引访问运算符
以下是在Kotlin中使用带有相应功能的索引访问运算符的一些表达式。
Expression | Translated to |
---|---|
a[i] |
a.get(i) |
a[i, n] |
a.get(i, n) |
a[i1, i2, ..., in] |
a.get(i1, i2, ..., in) |
a[i] = b |
a.set(i, b) |
a[i, n] = b |
a.set(i, n, b) |
a[i1, i2, ..., in] = b |
a.set(i1, i2, ..., in, b) |
示例:索引访问运算符
fun main(args: Array) {
val a = intArrayOf(1, 2, 3, 4, - 1)
println(a[1])
a[1]= 12
println(a[1])
}
运行该程序时,输出为:
2
12
推荐读物: Kotlin Index访问运算符重载
8.调用运算符
以下是Kotlin中使用带有相应功能的invoke 运算符的一些表达式。
Expression | Translated to |
---|---|
a() |
a.invoke() |
a(i) |
a.invoke(i) |
a(i1, i2, ..., in) |
a.inkove(i1, i2, ..., in) |
a[i] = b |
a.set(i, b) |
在Kotlin中,括号被翻译为调用invoke
成员 函数。
推荐读物: 在Kotlin中调用运算符重载
按位运算
与Java不同,Kotlin中没有按位和移位运算符 。为了执行这些任务,使用了各种功能(支持中缀符号):
-
shl
签名左移 -
shr
右移签名 -
ushr
无符号右移 -
and
-按位和 -
or
-按位或 -
xor
按位xor -
inv
按位反转
访问此页面以了解有关Kotlin中的按位运算的更多信息。
另外,与Java不同,Kotlin中没有三元运算符 。