有些熟悉的符號就像這些+、-、*、/符號,在數學世界,數學家分別賦予加、減、乘、除的概念,但在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 + ba -= b : a.minusAssign(b),a = a - ba *= b : a.timesAssign(b),a = a * ba /= b : a.divAssign(b),a = a / ba %= b : a.remAssign(b),a = a % b 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,表否定。還有許多沒介紹的在這裡:操作符和特殊符号
先這樣囉,明天見。