Kotlin運算子


運算子是對運算元(值或變數)執行操作的特殊字元,Kotlin中有各種型別運算子。它們如下所示 -

  • 算術運算子
  • 關係運算子
  • 賦值運算子
  • 一元運算子
  • 按位元運算
  • 邏輯運算子

1. 算術運算子

算術運算子用於執行基本的數學運算,如加法(+),減法(-),乘法(*),除法(/)等。

運算子 描述 表示式 轉換為
+ 加法 a+b a.plus(b)
- 減法 a-b a.minus(b)
* 乘法 a*b a.times(b)
/ 除法 a/b a.div(b)
% 模除 a%b a.rem(b)

算術運算子的例子

fun main(args : Array<String>) {  
    var a=10;  
    var b=5;  
    println(a+b);  
    println(a-b);  
    println(a*b);  
    println(a/b);  
    println(a%b);  
}

執行上面範例程式碼,得到以下結果 -

15
5
50
2
0

2. 關係運算子

關係運算子顯示運算元之間的關係和比較。以下是幾種常見的關係運算子:

運算子 描述 表示式 轉換為
> 大於 a>b a.compateTo(b)>0
< 小於 a<b a.compateTo(b)<0
>= 大於或等於 a>=b a.compateTo(b)>=0
<= 小於或等於 a<=b a?.equals(b)?:(b===null)
== 等於 a==b a?.equals(b)?:(b===null)
!= 不等於 a!=b !(a?.equals(b)?:(b===null))

關係運算子的範例

fun main(args : Array<String>) {  
    val a = 5  
    val b = 10  
    val max = if (a > b) {  
        println("a is greater than b.")  
        a  
    } else{  
        println("b is greater than a.")  
        b  
    }  
    println("max = $max")  
}

執行上面範例程式碼,得到以下結果 -

b is greater than a.
max = 10

3. 賦值運算子

賦值運算子(=)用於將值賦給另一個變數。值的分配從右到左。

運算子 描述 表示式 轉換為
+= 相加和賦值 a+=b a.plusAssign(b)
-= 相減和賦值 a-=b a.minusAssign(b)
*= 相乘和賦值 a*=b a.timesAssign(b)
/= 相除和賦值 a/=b a.divAssign(b)
%= 模除和賦值 a%=b a.remAssign(b)

賦值運算子的範例

fun main(args : Array<String>) {  

    var a =20;var b=5  
    a+=b  
    println("a+=b :"+ a)  
    a-=b  
    println("a-=b :"+ a)  
    a*=b  
    println("a*=b :"+ a)  
    a/=b  
    println("a/=b :"+ a)  
    a%=b  
    println("a%=b :"+ a)  

}

執行上面範例程式碼,得到以下結果 -

a+=b :25
a-=b :20
a*=b :100
a/=b :20
a%=b :0

4. 一元運算子

一元運算子僅與單個運算元一起使用。 以下是一些常用一元運算子。

運算子 描述 表示式 轉換為
+ 一元加 +a a.unaryPlus()
- 一元減 -a a.unaryMinus()
++ 遞增1 ++a a.inc()
-- 遞減1 --a a.dec()
! !a a.not()

一元運算子的範例

fun main(args: Array<String>){  
    var a=10  
    var b=5  
    var flag = true  
    println("+a :"+ +a)  
    println("-b :"+ -b)  
    println("++a :"+ ++a)  
    println("--b :"+ --b)  
    println("!flag :"+ !flag)  
}

執行上面範例程式碼,得到以下結果 -

+a :10
-b :-5
++a :11
--b :4
!flag :false

5. 邏輯運算子

邏輯運算子用於檢查運算元之間的條件。邏輯運算子列表如下 -

運算子 描述 表示式 轉換為
&& 如果所有表示式都為true,則返回true (a>b) && (a>c) (a>b) and (a>c)
ΙΙ 如果任何表示式為true,則返回true (a>b) ΙΙ (a>c) (a>b) or(a>c)
! 返回表達的補充 !a a.not()

邏輯運算子的範例

fun main(args: Array<String>){  
    var a=10  
    var b=5  
    var c=15  
    var flag = false  
    var result: Boolean  
    result = (a>b) && (a>c)  
    println("(a>b) && (a>c) :"+ result)  
    result = (a>b) || (a>c)  
    println("(a>b) || (a>c) :"+ result)  
    result = !flag  
    println("!flag :"+ result)  

}

執行上面範例程式碼,得到以下結果 -

(a>b) && (a>c) :false
(a>b) || (a>c) :true
!flag :true

6. 按位元運算

在Kotlin中,沒有任何特殊的按位元運算子。都是使用命名函式完成按位元運算。

運算子 描述 表示式
shl(bits) 符號左移 a.shl(b)
shr(bits) 符號右移 a.shr(b)
ushr(bits) 無符號右移 a.ushr(b)
and(bits) 按位元與 a.and(b)
or(bits) 按位元或 a.or(b)
xor(bits) 按位元互斥或 a.xor(b)
inv() 按位元反轉 a.inv()

7. 按位元運算的範例

fun main(args: Array<String>){  
    var a=10  
    var b=2  

    println("a.shl(b): "+a.shl(b))  
    println("a.shr(b): "+a.shr(b))  
    println("a.ushr(b:) "+a.ushr(b))  
    println("a.and(b): "+a.and(b))  
    println("a.or(b): "+a.or(b))  
    println("a.xor(b): "+a.xor(b))  
    println("a.inv(): "+a.inv())  

}

執行上面範例程式碼,得到以下結果 -

a.shl(b): 40
a.shr(b): 2
a.ushr(b:) 2
a.and(b): 2
a.or(b): 10
a.xor(b): 8
a.inv(): -11