1. 程式人生 > >kotlin學習:val與var區別,by lazy與lateinit區別

kotlin學習:val與var區別,by lazy與lateinit區別

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 //錯誤