kotlin學習:val與var區別,by lazy與lateinit區別
阿新 • • 發佈:2018-12-10
Kotlin中var和val的區別
Kotlin中有兩個關鍵字定義變數,這兩個關鍵字外形看著差別很小就只差了一個字母,但實際差別很大的。
var是一個可變【變數】,這是一個可以通過重新分配來更改為另一個值的變數。這種宣告變數的方式和java中宣告變數的方式一樣。
val是一個只讀【常量】,這種宣告變數的方式相當於java中的final變數。一個val建立的時候必須初始化,因為以後不能被改變。
var name = "zhang san" println(name) name = "li si" println(name) val finalValue = "我是不可改變的"; println(finalValue);
/**
* var變數
*/
fun main(args: Array<String>){
var x = 5 //推匯出Int型別
x += 1
println("x = $x")
}
/**
* val常量
*/
fun main(args: Array<String>){
val a: Int = 1 //立即初始化
val b = 2 //推匯出Int型別
val c: Int //當沒有初始化值的時候必須宣告型別
c = 3 //賦值
}
lateinit (var)和 by lazy(val)
lateinit 和 lazy 是 Kotlin 中的兩種不同的【延遲初始化】的實現
1.lateinit 只用於變數 var,而 lazy 只用於常量 val
2.lateinit不能用在可空的屬性上和java的基本型別上
val name: String by lazy { "****" }//正確
private val name: Int by lazy { 1 }//正確
private lateinit var test:String //正確
lateinit val test:String //錯誤
lateinit var test:Float //錯誤