變數是每個程式語言中都會有的基本單位。
來看看Kotlin是怎麼宣告變數的,基本的資料類型又有哪些?
宣告變數時,需要在變數名稱前加上關鍵字,編譯器才知道這是個什麼樣的變數:
建議以val為優先使用,若需要改動時再考慮改成var
val z = 100 //預設z是Int類型
val x = 100L //x是Long類型
//以下錯誤示範:
val a : Byte = 128 //Error,超出Byte最大值127
val b : Int = 12.2 //Error,要整數給double,不給過
val a = 1.8 //預設,是Double類型
val b = 1.8f //1.8後加f或F,編譯器就知道 a 是 Float 類型
val c = 10f //有f給過,理解為10.0,或沒加f就會出錯
字符面值用Char單引號括起來:'a'。
支援跳脫字元:
val str = "Hello\bWorld"
println(str)
//結果 : HellWorld
val str = "Hello\nWorld"
println(str)
// 結果 : Hello
// World
val str = "Hello\tWorld"
println(str)
// 結果 : Hello World
val str = "Hello\rWorld"
println(str)
//結果 : World
val str = "Hello\'World"
println(str)
//結果 : Hello'World
val str = "Hello\"World"
println(str)
//結果 : Hello"World
val str = "Hello\\World"
println(str)
//結果 : Hello\World
val str = "Hello\$World"
println(str)
//結果 : Hello$World
Kotlin 中的字符串用String類型表示,字符串值是用雙引號 ( ") 括起來的Char序列。
字符串是不可變的。初始化字符串後,將無法更改其值或為其分配新值。所有轉換字符串的操作都在一個新String物件中返回它們的結果,而原始字符串保持不變:
val str = "abc"
println(str.uppercase()) //ABC
println(str) //abc
當要列印出一段有文字又要參雜變數的字串時可以使用字串模板,使用變數的地方用${變數.method},亦可使用跳脫字元,如:
val userName = "Gary"
println("name : $userName\nlength of name : ${userName.length}")
//結果 name : Gary
// length of name : 4
語法:
var 變數名 : 資料類型 = 初始值。
val number : Int = 5
val number2 : Int = "123" // 給字符串不合法
資料類型與值要相符。意思是資料類型Int,後面給的值就必須是整數。若給別的類型,IDE就會提醒出錯。
當宣告了 number 這個變數時,這個 number 就是一個物件,而且是個 Int 類型的物件,並且=的意思,是將等號右邊這個5指派給了左邊這個變數 number。
但,number並沒有實際持有這個5,而是像信箱一樣,裡面放入像地址的:參考(reference),循著這個參考就能連結到5。
而var 或 val 關鍵字,實際上是在告訴編譯器這個參考是否可變。
變數名稱應使用小駝峰取名,最好可以描述變數儲存的資料,不可使用 Kotlin關鍵字
這是Kotlin的特色之一,對於變數宣告的資料類型定義可以省略,編譯器會依據初始值來推斷資料類型。
val number = 5
使用"is"、"!is"來判斷類型。如下:
val a: Any = 123
println(a is String) // false
println(a is Int) // true
println(a !is String) // a不是字符串,true
println(!(a is String)) // true,跟上句是一樣意思
val x: Any = 123
when (x) {
is Int -> print(x + 1)
is String -> print(x.length + 1)
is IntArray -> print(x.sum())
}
//結果 : 124
由上敘述可知,宣告變數時定義的資料型態與賦值類型必須相符,否則無法運作
那是否可以轉換值的資料型態,存入不同資料型態的變數?
有喔,利用轉換函式,加在變數或值後面就可了:
val a = "123"
val b : Int = a.toInt() //123
val c : Int = "123".toInt() //123
val d :String = 321.toString() //321
println("$a\n$b\n$c\n$d")
錯誤:
val e : Int = "gary".toInt() // 會出現數字格式異常(NumberFormatException)的錯誤
可以去android codelab了解更多變數的應用 :
在 Kotlin 中建立和使用變數
今天先降,掰~