iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
Mobile Development

新手向Android&Kotlin學習紀錄30天系列 第 14

第14天 Kotlin小學堂(3) : 那些運算子

  • 分享至 

  • xImage
  •  

有些熟悉的符號就像這些+、-、*、/符號,在數學世界,數學家分別賦予加、減、乘、除的概念,但在kotlin裡面又代表什麼意思呢?
在Kotlin的程式語言世界,對這些符號的背後,也定義了與之相符函數去執行我們熟悉或新的行動,比如說: a+b,人類理所當然認為是兩數相加:a加上b,對應上的Kotlin的函數:a.plus(b),這個.plus()表現出來的行為就等於+
於是人類可以輕鬆地使用我們熟悉的符號來編寫程式。
++、--、==、&&、||、!...等運算子(操作符),在Kotlin的世界又是什麼意思呢?

一元前缀操作符

  • +a : a.unaryPlus(), 正號的意思。
  • -a : a.unaryMinus(),負號的意思。

賦值運算子

  • a=b : 這並不是數學上的等於,而是將右邊的b值賦值給左邊的a,b可以是變數、常數、表達式。

遞增或遞減

  • a++a.inc(),變數的值+1並重新賦值給自己的意思。
  • a--a.dec(),變數的值-1並重新賦值給自己的意思。
var a = 2
a++
println(a) //a = 3

var b = 2
b--
println(b) // b = 1
  • 變數++++變數 有差別,--同理 ,請看下面例子:
    var a = 2
    val m = ++a       //++a 是加完1後才賦值給m
    println("m: $m a: $a") //m: 3 a: 3

    var b = 2
    val n = b++       //b++ 是賦值給n後,b自己才加1
    println("n: $n b: $b") //n: 2 b: 3

算數運算子

  • a+b : a.plus(b),加,也可以當字串的連接符,如:"hello"+" world"。
  • a-b : a.minus(b),減。
  • a*b : a.times(b),乘。
  • a/b : a.div(b),除,取商數,忽略餘數。
  • a%b : a.rem(b),取餘數。如下:
val a = 5%2   // a = 1
  • a..b : a.rangeTo(b),在a到b之間,如下:
val randomNumber = (0..3).random()
println(randomNumber) //結果會是隨機出現0、1、2、3
val randomChar = ('a'..'d').random()
println(randomChar)  //結果會是隨機出現a、b、c、d其中之一

廣義賦值

  • a += b : a.plusAssign(b),a = a + b
  • a -= b : a.minusAssign(b),a = a - b
  • a *= b : a.timesAssign(b),a = a * b
  • a /= b : a.divAssign(b),a = a / b
  • a %= b : a.remAssign(b),a = a % b
    a必須是var,例:
    var a = 5
    val b = 2
    a += b               // a = 5+2
    println("a: $a")     // a : 7
    a -= b               // a = 7-2
    println("a: $a")     // a : 5
    a *= b               // a = 5*2
    println("a: $a")     // a : 10
    a /= b               // a = 10/2
    println("a: $a")     // a : 5
    a %= b               // a = 5%2
    println("a: $a")     // a :1

關係運算子

結構相等與不相等

對於非基本資料類型的比較,會調用.equal()

  • a == b : a?.equals(b) ?: (b === null)
  • a != b : !(a?.equals(b) ?: (b === null))

引用相等與不相等

檢查兩者引用/參考(reference)指向同一物件,但當值為基本類型時(如:Int),===== 等價。

  • a === b
  • a !== b

比較運算子

compareTo()返回的是Int值

  • 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 : AND,可以理解為a、b兩條件都必須成立的意思.
  • a || b : OR,可以理解為a、b條件其中一個為真就成立。
  • !a : NOT,表否定。

還有許多沒介紹的在這裡:操作符和特殊符号

先這樣囉,明天見。


上一篇
第13天 Kotlin小學堂(2) : 變數、基本資料類型
下一篇
第15天 kotlin小學堂(4) 控制流程 : if/else 、 when
系列文
新手向Android&Kotlin學習紀錄30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言