kotlin踩坑之路

工欲善其事必先利其器,首先要先配置開(kāi)發(fā)環(huán)境和選好開(kāi)發(fā)工具,我在這里使用的是Android Studio2.3.3和 IntelliJ IDEA:https://www.jetbrains.com/idea/,附上我的IntelliJ IDEA版本

IntelliJ IDEA for Mac

Android Studio:2.x 版本需要安裝 Kotlin 插件支持,3.0 開(kāi)始默認(rèn)支持編寫 Kotlin 代碼,無(wú)需插件(PS:添加插件的方式跟加GsonFormat一樣的,就不再詳解了)。

下面來(lái)看看語(yǔ)法:

1、變量類型:可空

kotlin的特性之一是類型安全。定義變量時(shí)需要定義該變量是否為空,一旦要求變量不能為空,那后續(xù)的空指針問(wèn)題自然也不復(fù)存在。我們先來(lái)看kotiln里是如何定義變量的:

java:

String str ="test";

final String str2 ="test2";

String str3;

kotlin:

var str ="test"

val str2 ="test2"

var str3:String?=null

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

另外從代碼中可以看出很重要的一點(diǎn),那就是:從此再也不用寫分號(hào)

var a:Int =null//錯(cuò)誤,類型后沒(méi)?,即不可空類型,自然不能等于null

var a:Int? =null//正確

val canNull: Int ? =0

canNull.toFloat//錯(cuò)誤,可空變量調(diào)用時(shí)要判斷空

canNull?.toFloat//正確,(如果是null,什么都不做)

canNull!!.Float//正確,(如果null,報(bào)空指針)

val canNotNull: Int? =0

canNotNull.toFloat//正確

如果在定義變量時(shí)(例如定義成員變量),又想該變量不為空,又不想定義時(shí)就初始化時(shí)可以使用lateinit關(guān)鍵字

lateinit var test: String//正確

lateinit val test:String//錯(cuò)誤

lateinit var test: Float//錯(cuò)誤

關(guān)于lateinit關(guān)鍵字的使用限制:

lateinit modifier is allowed only on mutable properties

翻譯:lateinit修飾符只允許在可變屬性上

lateinit modifier is not allowed on primitive type properties

翻譯:在原始類型屬性上不允許使用lateinit修飾符

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

四類八種基本類型

2、常用語(yǔ)法:

switch:

java:

int test =1;

switch(test) {

? ? ? ? case1:...break;

? ? ? ? default:break;

}

kotlin:

when (test) {

? ? ? ? ? ?1-> fragment = ShopFragment()

? ? ? ? ? ?else-> {

? ? ? ? ? ?}

}

這只是when最簡(jiǎn)單的用法,但kotlin里when的用處要比switch強(qiáng)大得多,when可以返回值,甚至可以在匹配條件里檢測(cè)參數(shù)類型等,例如:

val result = when (x) { //返回值

? ? ? 0,1->"test"else->"else"}

when(view) { //檢測(cè)參數(shù)類型,并且可見(jiàn),在kotlin里,instanceof使用is代替

? ? ? ? ? ?is TextView -> view.setText("I'm a TextView")

? ? ? ? ? else-> view.visibility = View.GONE

}

var test =3

when(view) { //檢測(cè)參數(shù)范圍

? ? ? ? ? ?in0..10-> {

? ? ? ? ? ?...

? ? ? ? ? ?}

? ? ? ? ? ?else-> {

? ? ? ? ? ?...

? ? ? ? ? }

for循環(huán):

java:

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

}

kotlin:

for(i in 0..4) {

}

for(item in listData) {//遍歷列表,直接操作列表內(nèi)的對(duì)象

? ? ?item.method()

}

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

}

for((i,item)in list.witnIndex()) {//加強(qiáng)版

}

listData.forEach { it.method() }//變種的for循環(huán)

更多語(yǔ)法詳見(jiàn)教程 ? http://www.kotlincn.net/docs/tutorials/

另外,附上Kotlin資源大全 ? ?http://blog.csdn.net/cenzr/article/details/72674849

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 前言 人生苦多,快來(lái) Kotlin ,快速學(xué)習(xí)Kotlin! 什么是Kotlin? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,267評(píng)論 9 118
  • 《Kotin 編程思想·實(shí)戰(zhàn)》 《Kotlin極簡(jiǎn)教程》正式上架: 點(diǎn)擊這里 > 去京東商城購(gòu)買閱讀 點(diǎn)擊這里 >...
    光劍書架上的書閱讀 2,118評(píng)論 1 4
  • Google在今年的IO大會(huì)上宣布,將Android開(kāi)發(fā)的官方語(yǔ)言更換為Kotlin,作為跟著Google玩兒An...
    藍(lán)灰_q閱讀 76,993評(píng)論 31 489
  • 想你,春暖花開(kāi) 想你,夏日涼風(fēng) 想你,晴空引鶴 想你,寒門扉火 安靜的時(shí)候,是想你 想你的時(shí)候,是安靜 我這雙眺望...
    流月生閱讀 323評(píng)論 0 4
  • 數(shù)學(xué)課上,手機(jī)里收到一條告白短信,是張秋晨發(fā)過(guò)來(lái)的。他寫:劉靜,我喜歡你。 劉靜對(duì)著這條消...
    隨憶而鞍閱讀 427評(píng)論 3 4