📜  Kotlin运算符

📅  最后修改于: 2020-10-05 14:57:18             🧑  作者: Mango

科特林具有一组运算符来执行算术,分配运算符等等。您将在本文中学习如何使用这些运算符 。

运算符是对操作数(变量和值)进行运算的特殊符号(字符)。例如, +是执行加法的运算符 。

在Java变量文章中,您学习了声明变量并为变量赋值。现在,您将学习使用运算符对它们执行各种操作。


1.算术运算符

以下是Kotlin中的算术运算运算符列表:

Kotlin Arithmetic Operators
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

算术运算运算符实际上如何工作?

假设您正在使用+算术运算运算符将两个数字ab相加。

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

请注意, orand是支持中缀表示法的函数。

逻辑运算符用于控制流,例如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中没有三元运算符 。