變數宣告
Kotlin 使用兩個不同的關鍵字(即 val 和 var)來宣告變數,
- val 用于值從不更改的變數,使用 val 宣告的變數無法重新賦值(只能賦值一次,一旦賦值后面就不能再次賦值),
- var 用于值可以更改的變數,
定義變數的格式如下:
var | val 變數名 [:型別] [= 初始值]
[*]不是必須的,型別可以根據初始值進行自動推匯出來,初始值也不是在定義變數的時候就必須進行設定的,在使用之前初始化都是可以的,
如下定義一個String型別的val變數name,一個的人的名字基本是不會變化的,所以我用val來定義變數name
val name:String = "Kotlin" //定義變數的時候立即賦值
不過有些值是一直都在變化的,比如一個人的年齡,每年都在變化,今天17明年就是18了,這個時候我們就需要用var來定義了,在不同的年份,一個人的年齡是不一樣的
var age: Int = 17 //小明今年17歲
age = 18 //小明明年就是18歲了
定義變數我們可以通過關鍵字val和var來明確指出那些變數的值是可以進行更改的,請根據需要加以利用,如果參考的變數必須可重新賦值,則將其宣告為 var,否則,請使用 val,
變數在宣告的時候可以不進行立即賦值,可以在后面在使用之前在進行初始化給予賦值的
val name: String?
name = "Kotlin"
型別推斷
接著上面的實體來講,我們在定義變數name和age的時候可不可以不指定型別呢,這個是可以的,因為Kotlin可以根據初始值來欄位推匯出變數的型別,age會自動推匯出Int型別,而name會自動推匯出為String型別
var age = 17 //小明今年17歲
age = 18 //小明明年就是18歲了
val name = "Kotlin"
但是要記住一點,在定義變數的時候,要是省略變數的型別,必須要給變數立即賦值,不然是不能省略型別,因為環境要根據我們在定義變數的初始值來進行型別推導,所以在省略型別的時候,必須給予初始值,
Null 安全
在某些語言中,可以宣告參考型別變數而不明確提供初始值,在這類情況下,變數通常包含 null 值,默認情況下,Kotlin 變數不能持有 null 值,這意味著以下代碼段無效:
val name:String = null//這樣是編譯不通過的
要使變數持有 null 值,它必須是可為 null 型別,可以在變數型別后面加上 ? 后綴(說明變數可為null),將變數指定為可為 null,如以下示例所示:
val name:String? = null //編譯通過
指定 String? 型別后,就可以給name 賦予 String 值或 null
必須小心處理可為 null 的變數,否則可能會出現可怕的 NullPointerException
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/260973.html
標籤:其他
