Kotlin中val和var的區別

變量可以很簡單地定義成可變(var)和不可變(val)的變量。這個與Java中使用的final很相似。但是不可變在Kotlin(和其它很多現代語言)中是一個很重要的概念。

一個不可變對象意味着它在實例化之後就不能再去改變它的狀態了。如果你需要一個這個對象修改之後的版本,那就會再創建一個新的對象。這個讓編程更加具有健壯性和預估性。在Java中,大部分的對象是可變的,那就意味着任何可以訪問它這個對象的代碼都可以去修改它,從而影響整個程序的其它地方。

Kotlin中有兩個關鍵字定義變量,這兩個關鍵字外形看着差別很小就只差了一個字母,但實際差別很大的。

var是一個可變變量,這是一個可以通過重新分配來更改爲另一個值的變量。這種聲明變量的方式和Java中聲明變量的方式一樣。

val是一個只讀變量,這種聲明變量的方式相當於java中的final變量。一個val創建的時候必須初始化,因爲以後不能被改變。

不可變對象也可以說是線程安全的,因爲它們無法去改變,也不需要去定義訪問控制,因爲所有線程訪問到的對象都是同一個。所以在Kotlin中,如果我們想使用不可變性,我們編碼時思考的方式需要有一些改變。一個重要的概念是:儘可能地使用val。除了個別情況(特別是在Android中,有很多類我們是不會去直接調用構造函數的),大多數時候是可以的。如果使用var一般都需要判空

val s = "Example" // A String
val i = 23 // An Int
val actionBar = supportActionBar // An ActionBar in an Activity context
var name: String? = null    //可變變量一般要注意使用安全操作符? ,使用時都要加上? 
val length = name?.length
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章