Kotlin 的基本數(shù)值類型包括 Byte、Short、Int、Long、Float、Double 等。不同于Java的是,字符不屬于數(shù)值類型,是一個獨立的數(shù)據(jù)類型。
比較兩個數(shù)字
Kotlin 中沒有基礎(chǔ)數(shù)據(jù)類型,只有封裝的數(shù)字類型,你每定義的一個變量,其實 Kotlin 幫你封裝了一個對象,這樣可以保證不會出現(xiàn)空指針。數(shù)字類型也一樣,所有在比較兩個數(shù)字的時候,就有比較數(shù)據(jù)大小和比較兩個對象是否相同的區(qū)別了。
在 Kotlin 中,三個等號 === 表示比較對象地址,兩個 == 表示比較兩個值大小。
fun main(args:Array<String>){
val a:Int = 10000
print(a===a)//返回true,值相等,對象地址相等
//經(jīng)過了裝箱,創(chuàng)建了兩個不同的對象
val boxedA :Int?=a
val anotherBoxedA:Int?=a
println(boxedA === anotherBoxedA) // false,值相等,對象地址不一樣
println(boxedA == anotherBoxedA) // true,值相等
}
類型轉(zhuǎn)化
由于不同的表示方式,較小類型并不是較大類型的子類型,較小的類型不能隱式轉(zhuǎn)換為較大的類型。 這意味著在不進行顯式轉(zhuǎn)換的情況下我們不能把 Byte 型值賦給一個 Int 變量。
錯誤例子
val b: Byte = 1
val i: Int = b
正確例子
val b: Byte = 1
val i: Int = b.toInt()
每種數(shù)據(jù)類型都有下面的這些方法,可以轉(zhuǎn)化為其它的類型:
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char
數(shù)組
數(shù)組用類 Array 實現(xiàn),并且還有一個 size 屬性及 get 和 set 方法,由于使用 [] 重載了 get 和 set 方法,所以可以通過下標(biāo)很方便的獲取或者設(shè)置數(shù)組對應(yīng)位置的值。
數(shù)組的創(chuàng)建兩種方式:一種是使用函數(shù)arrayOf();另外一種是使用工廠函數(shù)。
fun main(args:Array<String>){
val a=arrayof(1,2,3)
val b=Array(3,{i-> (i * 2) })
//讀取數(shù)組內(nèi)容
println(a[0]) // 輸出結(jié)果:1
println(b[1]) // 輸出結(jié)果:2
}
字符串
和 Java 一樣,String 是可不變的。方括號 [] 語法可以很方便的獲取字符串中的某個字符,也可以通過 for 循環(huán)來遍歷:
for(c in str){
print(c)
}
kotlin支持三個引號“”“擴起來的字符串,支持多行字符串
fun main(args:Array<String>){
val text="""
多行字符串
多行字符串
"""
print(text)
}
String可以通過trimMargin()方法來刪除多余的空白
fun main(args:Array<String>){
val text="""
多行字符串
多行字符串
""".trimMargin()
print(text)
}
字符串模板
字符串可以包含模板表達(dá)式 ,即一些小段代碼,會求值并把結(jié)果合并到字符串中。 模板表達(dá)式以美元符($)開頭,由一個簡單的名字構(gòu)成:
fun main(args:Array<String>){
val i=10
val s="i=$i"http://求值結(jié)果為i=10
print(s)
}
或者用花括號擴起來的任意表達(dá)式
fun main(args:Array<String>){
fun main(args: Array<String>) {
val s = "runoob"
val str = "$s.length is ${s.length}" // 求值結(jié)果為 "runoob.length is 6"
println(str)
}
}