Kotlin有一組運算符,可以執(zhí)行算術(shù),賦值,比較運算符等。您將在本文中學(xué)習(xí)如何使用這些運算符。
運算符是對操作數(shù)(變量和值)執(zhí)行運算的特殊符號(字符)。例如,+ 是執(zhí)行加法的運算符。
在Kotlin變量文章中,您學(xué)習(xí)了聲明變量并為變量分配值?,F(xiàn)在,您將學(xué)習(xí)使用運算符對它們執(zhí)行各種操作。
以下是Kotlin中的算術(shù)運算符列表:
運算符 | 描述 |
---|---|
+ | 加法運算符(也用于字符串連接) |
- | 減法運算符 |
* | 乘法運算符 |
/ | 除法運算符 |
% | 求模運算符 |
fun main(args: Array<String>) { 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
+ 運算符,還可用于級聯(lián)String值,將字符串拼接在一起。
fun main(args: Array<String>) { 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
假設(shè)您正在使用 + 算術(shù)運算符將兩個數(shù)字a和b相加。
在后臺,表達式a + b 調(diào)用 a.plus(b) 成員函數(shù)。plus運算符被重載以處理 String 值和其他基本數(shù)據(jù)類型(Char 和 Boolean除外)。
// + 基本類型的運算符 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 // 對字符串串聯(lián) operator fun String?.plus(other: Any?): String
您還可以使用 + 運算符通過重載plus()函數(shù)來處理用戶定義的類型(如對象)。
推薦閱讀: Kotlin 運算符重載
這是算術(shù)運算符及其相應(yīng)函數(shù)的列表:
表達式 | 函數(shù)名稱 | 用法 |
---|---|---|
a + b | 加 | a.plus(b) |
a-b | 減 | a.minus(b) |
a * b | 乘 | a.times(b) |
a / b | 除 | a.div(b) |
a%b | 求模 | a.mod(b) |
賦值運算符用于為變量賦值。我們之前已經(jīng)使用過簡單的 = 賦值運算符。
val age = 5
在此,使用 = 運算符將 5 分配給變量 age。
以下是所有賦值運算符及其對應(yīng)函數(shù)的列表:
表達式 | 相當(dāng)于 | 用法 |
---|---|---|
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<String>) { var number = 12 number *= 5 // number = number*5 println("number = $number") }
運行該程序時,輸出為:
number = 60
這是一元運算符,它們的含義和相應(yīng)功能的表:
運算符 | 描述 | 表達式 | 用法 |
---|---|---|---|
+ | 一元加 | +a | a.unaryPlus() |
- | 一元減 | -a | a.unaryMinus() |
! | 不是(反轉(zhuǎn)值) | !a | a.not() |
++ | 遞增:值加1 | ++a | a.inc() |
-- | 遞減:值減1 | --a | a.dec() |
fun main(args: Array<String>) { 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
這是一個相等和比較運算符,它們的含義以及相應(yīng)函數(shù)的列表:
運算符 | 描述 | 表達式 | 用法 |
---|---|---|---|
> | 大于 | a> b | a.compareTo(b)> 0 |
< | 小于 | a <b | a.compareTo(b)<0 |
> = | 大于 或 等于 | a> = b | a.compareTo(b)>= 0 |
<= | 小于 或 等于 | a <= b | a.compareTo(b)<= 0 |
== | 等于 | a == b | a?.equals(b)?:(b === null) |
!= | 不等于 | a!= b | !(a?.equals(b)?:(b ===null)) |
比較和相等運算符用于控制流,例如:if 表達式,when表達式 和 循環(huán)。
fun main(args: Array<String>) { val a = -12 val b = 12 //使用大于運算符 val max = if (a > b) { println("a大于b") a } else { println("b大于a") b } println("max = $max") }
運行該程序時,輸出為:
b大于a max = 12
Kotlin中有兩個邏輯運算符:|| 和 &&
這是邏輯運算符,它們的含義和相應(yīng)函數(shù)的表。
運算符 | 描述 | 表達式 | 對應(yīng)函數(shù) |
---|---|---|---|
|| | 如果任一布爾表達式為true,則為true | (a>b)||(a<c) | (a>b)or(a<c) |
&& | 如果所有布爾表達式均為true,則為true | (a>b)&&(a<c) | (a>b)and(a<c) |
請注意,or 和 and 是支持中綴表示法的函數(shù)。
邏輯運算符用于控制流,例如 if表達式,when表達式 和 循環(huán)。
fun main(args: Array<String>) { val a = 10 val b = 9 val c = -1 val result: Boolean // result 為 true 是最大 result = (a>b) && (a>c) // result = (a>b) and (a>c) println(result) }
運行該程序時,輸出為:
true
in運算符用于檢查一個對象是否屬于一個集合。
運算符 | 表達式 | 用法 |
---|---|---|
in | a in b | b.contains(a) |
!in | a !in b | !b.contains(a) |
fun main(args: Array<String>) { val numbers = intArrayOf(1, 4, 42, -3) if (4 in numbers) { println("numbers 數(shù)組包含 4.") } }
運行該程序時,輸出為:
numbers 數(shù)組包含 4.
以下是在Kotlin中使用帶有相應(yīng)函數(shù)的索引訪問運算符的一些表達式。
表達 | 用法 |
---|---|
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<String>) { val a = intArrayOf(1, 2, 3, 4, - 1) println(a[1]) a[1]= 12 println(a[1]) }
運行該程序時,輸出為:
2 12
以下是Kotlin中使用帶有相應(yīng)函數(shù)的invoke運算符的一些表達式。
表達 | 翻譯成 |
---|---|
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中,括號被轉(zhuǎn)換為調(diào)用invoke成員函數(shù)。
與Java不同,Kotlin中沒有按位和移位運算符。為了執(zhí)行這些任務(wù),使用了各種功能(支持中綴符號):
shl - 簽名左移
shr - 右移簽名
ushr - 無符號右移
and - 按位與
or - 按位或
xor - 按位異或
inv - 按位反
訪問此頁面以了解有關(guān)Kotlin中按位運算更多信息。
另外,與Java不同,Kotlin中沒有三元運算符。