Kotlin簡單使用手冊

在昨天和做android的前輩一番交談后,覺得很慚愧,許多東西還只是知其然而不知其所以然,也深感自己的技術還太淺薄。以后要更加努力地學習,要著重學習原理、方法論,不能只停留在會用的階段。

今天又要獻丑分享一些關于使用Kotlin這門新興的編程語言的一些要注意的地方。因為上一個項目全部使用了kotlin,算是給后面接手的朋友的一份交接文檔吧。

先推薦三篇文章吧:

Kotlin for android developers為什么說Kotlin值得一試Kotlin: Java 6 廢土中的一線希望

這三篇文章都是我反復閱讀參考很多遍的關于kotlin使用的中文教程,當然,有時候遇到了中文教程里講的不清楚,或者是感覺翻譯不太對胃口的,可以直接去查閱官方文檔

遇到問題請善用資料,基本上都能從中得到解答。以下簡單介紹一下常見的幾個注意點。

變量類型:可空

kotlin的特性之一是類型安全。定義變量時需要定義該變量是否為空,一旦要求變量不能為空,那后續的空指針問題自然也不復存在。我們先來看kotiln里是如何定義變量的:

java:

String str = "test";
final String str2 = "test2";
String str3;

kotlin:

var str = "test"
val str2 = "test2"
var str3:String ?= null

kotlin使用var,val關鍵字定義變量,如果在定義變量時直接賦值,則可以不用指定變量類型,否則需要在變量名后使用“:”來指定類型。在類型后加“?”表示該變量可空。如果變量可空,那在后續使用變量時,就必須先判斷是否為空。

另外從代碼中可以看出很重要的一點,那就是:從此再也不用寫分號啦

var a:Int = null  //錯誤,類型后沒?,即不可空類型,自然不能等于null
var a:Int? = null  //正確

val canNull: Int ? = 0 
canNull.toFloat  //錯誤,可空變量調用時要判斷空
canNull?.toFloat   //正確,(如果是null,什么都不做)
canNull!!.Float   //正確,(如果null,報空指針)
val canNotNull: Int  = 0 
canNotNull.toFloat  //正確

那如果在定義變量時(例如定義成員變量),又想該變量不為空,又不想子定義時就初始化要怎么辦呢?使用lateinit關鍵字

lateinit var test:String //正確
lateinit val test:String //錯誤
lateinit var test:Float //錯誤

關于lateinit關鍵字的使用限制:

lateinit modifier is allowed only on mutable properties
lateinit modifier is not allowed on primitive type properties

可見,lateinit修飾符只能修飾不可空類型,并且不允許修飾基礎類型(四類八種基礎類型int, double,boolean等)。

常用語法:

switch

java:

int test = 1;
switch(test) {
    case 1:
        ...
        break;
    default:
        break;
}

kotlin:

when (test) {
    1 -> fragment = ShopFragment()
    else -> {
    }
}

這只是when最簡單的用法,但kotlin里when的用處要比switch強大得多,when可以返回值,甚至可以在匹配條件里檢測參數類型等,例如:

val result = when (x) { //返回值
    0, 1 -> "test"
    else -> "else"
}

when(view) { //檢測參數類型,并且可見,在kotlin里,instanceof使用is代替
    is TextView -> view.setText("I'm a TextView")
    else -> view.visibility = View.GONE
}

var test = 3
when(view) { //檢測參數范圍
    in 0..10 -> {
        ...
    }
    else -> {
        ...
    }

更多用法詳見教程。

for循環

java:

for(int i =0; i < 5; i++) {
}

kotlin:

for(i in 0..4) {
}

for (item in listData) { //遍歷列表,直接操作列表內的對象
  item.method()
}

for (i in listData.indices) { //遍歷列表帶行index
}

for((i, item) in list.witnIndex()) { //加強版
}

listData.forEach { it.method() } //變種的for循環
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前言 人生苦多,快來 Kotlin ,快速學習Kotlin! 什么是Kotlin? Kotlin 是種靜態類型編程...
    任半生囂狂閱讀 26,276評論 9 118
  • Google在今年的IO大會上宣布,將Android開發的官方語言更換為Kotlin,作為跟著Google玩兒An...
    藍灰_q閱讀 77,004評論 31 489
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,372評論 25 708
  • 工欲善其事必先利其器,首先要先配置開發環境和選好開發工具,我在這里使用的是Android Studio2.3.3和...
    Orz013閱讀 3,904評論 5 1
  • 好友蓮約我到她的新家品茶。房子并不大,卻別具匠心地在窗臺旁做了個小茶室,竹席編制的榻榻米上放著一張古色古香的茶桌,...
    江南煙雨閱讀 1,288評論 1 7