編輯:關於android開發
原文標題:Variables in Kotlin, differences with Java. var vs val (KAD 02)
作者:Antonio Leiva
時間:Nov 28, 2016
原文鏈接:http://antonioleiva.com/variables-kotlin/
Kotlin系列課程的第二課:Kotlin中變量不同於Java: var 對val。
在這第二章節中,我們將了解Kotlin中變量是怎樣工作的,什麼是val和var,什麼時間使用它們。
我從這開始,是因為理解這部分內容對後續討論怎樣在類中創建“字段”時非常有用(還可了解它們不是字段)。
如Java那樣,只要在變量的范圍內執行代碼,Kotlin變量就可以被賦值、修改,在程序中不同位置被使用。
但是,我們將聚焦在它與Java不同的方面。
在Java中也分可變與不可變(如果不希望變量被改變,可將變量說明為final),但是在Kotlin中,更簡潔的、更常用的是:只要可能,在Kotlin中首選時不變值。
事實上,在程序中大部分地方使用不可變的變量,可帶來很多益處,如:可預測的行為和線程安全。
在Kotlin中有趣的是大部分情況你不需要說明你使用對象的類型,而編譯器就是推斷它。
所以,我們只需要依據要產生的變量類型填寫var或val,其類型通常能夠被推斷出來。我們也可以明確地指定變量類型。
一些例子:
1 var x = 7 2 var y: String = "my String" 3 var z = View(this)
說明:如你所見,你不需要用new來創建對象的新實例。
無論何時,編譯器能夠檢測沒有其它可選項,自動地完成類型轉換。非常棒!
1 val z: View = findViewById(R.id.my_view) 2 3 if (z is TextView) { 4 z.text = "I've been casted!" 5 }
看見我沒有調用setText()嗎?這將在下一篇說明!
沒有基本類型,沒有void。如果有時沒有返回值,實際時返回Unit對象。大多數情況下,Uint可以省略,但是它確實存在的,被隱藏了。
因此,所有這些比哪裡都是對象:
1 val x: Int = 20 2 val y: Double = 21.5 3 val z: Unit = Unit
例如,整形不能賦值長變量。下面的代碼不能通過編譯:
1 val x: Int = 20 2 val y: Long = x
你需要明確的進行轉換:
1 val x: Int = 20 2 val y: Long = x.toLong()
這些是在Java和Kotlin之間能夠找出的明顯不同之處。通常,Kotlin變量提供更加靈活的、安全的(由於任何可能時用val約定)和更清晰的、簡潔的代碼。
仍有疑問?准備閱讀下篇!
Content Provider屬於Android應用程序的組件之一,作為應用
安卓DJ113舞曲網應用客戶端 項目源碼(服務器+客戶端),安卓dj113Android DJ113舞曲網app客戶端 播放器源碼 項目源碼(服務器
我的Android進階之旅------)Android自定義View實現帶數字的進度條(NumberProgressBar) 第一步、效果展示 圖1、藍色的進度條
Android自動連接指定的wifi,免密碼或指定密碼,androidwifi一、運行時的狀態 遇到一個這樣的要求:“不進行掃描操作,怎麼對指定的免密碼WIF