Kotlin for Android使用教程(一)

前言

本文主要講解如何在Android中使用kotlin語(yǔ)言,如果想了解更多關(guān)于kotlin的知識(shí), 請(qǐng)查閱官方中文文檔

  • 聲明變量
    方法
    繼承
    實(shí)體類(lèi)
    靜態(tài)塊companion object
    智能字符串
    范圍判斷
    再見(jiàn)谜慌!findViewById()
    優(yōu)雅解決NPE
    say bye! if else
    its awesome! when
    思考
    下一章

聲明變量

1.var a = 5 or val a: Int = 5
2.val TAG = "com.myapplication.example"

  • var: 任意類(lèi)型
    val: 常量
    結(jié)尾無(wú)分號(hào)

方法

override fun onCreate(savedInstanceState: Bundle?) {}

  • override: 父類(lèi)方法
    fun: 方法聲明
    ?表示可能為空
    無(wú)返回值
//有返回值
fun sum(a: Int,b: Int): Int{
    retrun a + b
}
//等同于
fun sum(a: Int,b: Int) = a + b 
//一臉懵逼了莺奔?
//這個(gè)呢欣范?
fun maxOf(a: Int, b: Int): Int {
    if (a > b) {
        return a
    } else {
        return b
    }
}
//等同于
fun maxOf(a: Int, b: Int) = if (a > b) a else b
//慢慢消化吧~

繼承

  • 參數(shù)繼承

view instanceof Button to view is Button

  • class繼承

class MainActivity : AppCompatActivity(){}

實(shí)體類(lèi)

  • example A:
//class有構(gòu)造參數(shù)時(shí)
class Person(a: Int,b:String){
    var id = 0
    var name = ""
}
var p = Person(2,"helloWorld")
  • example B:
//class無(wú)構(gòu)造參數(shù)時(shí)
class Person{
    var id = 0
    var name = ""
}
var p = Person()
p.id = 2
p.name = "helloWorld"
  • 注意:全局變量一定得初始化,而局部變量可以不初始化,這是和java不同的地方

靜態(tài)塊companion object

class A() {
companion object {
      val TAG_SIZE = 100
  }
}
//使用:
var i = A.TAG_SIZE

智能字符串

  • java:

xxx.println("---size:"+list.size());

  • kotlin:

print("---size: ${list.size},first: ${list[0]}")

//同理可得
var i: Int = 1
var s: String = "helloWorld:$i"
//值為helloWorld:1

范圍判斷

  • java:

1.if(a >= 3 && a<= b){...}

2.if(!(c >='a' && c<= 'z')) {
    int i = 'a';
}
  • kotlin:

1.if(a in 3..b){...}

2.if(c !in 'a'..'z'){
    var i: Int = 'a'.toInt()    
}
  • 注意是兩個(gè).來(lái)表示范圍

再見(jiàn)!findViewById()

1.在project -> build.gradle添加
classpath "org.jetbrains.kotlin:kotlin-android-extensions:1.1.0"
2.在app->build.gradle添加
apply plugin: 'kotlin-android-extensions'
compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.0"

//導(dǎo)入activity_main布局文件中的所有控件
import kotlinx.android.synthetic.main.activity_main.*
//activity_main布局文件中有一個(gè)TextView控件,id為text01
//使用
text01.text = "helloWorld"

優(yōu)雅解決NPE

var a: String = "abc"
a = null//報(bào)錯(cuò),提醒a(bǔ)不能為null
var i = a.length//就算通過(guò)了,這里也會(huì)報(bào)錯(cuò),因?yàn)閍為null
//變換之后
var a: String令哟? = "abc"
a = null//通過(guò)恼琼,因?yàn)槲艺f(shuō)了a是可以為null的
var i = a?.length
//在這里如果a為null就返回null如果a不為null就正確返回
//這樣a是null也不會(huì)報(bào)空指針異常了,一個(gè)?修飾符優(yōu)雅解決屏富!
//更多使用
//如果想知道bob所在部門(mén)的老大的名字但又不知道哪個(gè)為null的時(shí)候
var name: String= bob?.department?.header?.name

say bye! if else

首先是非空判斷

  • java
//三元運(yùn)算符
int i = a != null ? a.length : 0;
//if else
if(a != null)
    i = a.length;
else
    i = 0;
  • kotlin
//方式1
var i: Int = if(a != null) a.length else 0 
//竟然還有if else真不爽啊
//那么方式2來(lái)了
var i: Int = a?.length ?: 0;
//一臉懵逼晴竞?!
//別慌,這里的意思是如果?:左邊的表達(dá)式不為null狠半,則返回,也就是a.length,如果為null就返回?:右邊的表達(dá)式,也就是0

這是普通的if else判斷

  • java
if(a > b)
    i = a;
else
    i = b;
  • kotlin
var i: Int = if(a > b) a else b

its awesome! when

現(xiàn)在采用全新而炫酷的表達(dá)方式:when

when (a) {
        1 -> print("its 1")
        3,4 -> print("its 3 or 4")
        sum(a,1) -> print("its a + 1")
        in 1..10 -> print("its >=1 and <= 10")
         else -> print("error!nothing!")
    }
//是不是有Rxjava的味道呢噩死?23333
//接下來(lái)是替換if的情況,這個(gè)很好理解
var word: String = when{
    bob.isSay() -> "bob say!"
    jojo.isSay() -> "jojo say!"
    else -> "not say anything!"
}
//最后是變(diao)態(tài)(zha)的(tian)使用
fun getName(p: Person,str: String): String = when(p.id){
    1 -> p.name
    else -> str
}
  • 支持單值判斷
    支持多個(gè)值判斷
    支持方法返回值判斷
    支持范圍判斷
    支持末尾else
    支持直接賦值給變量或方法
    支持替換if-else的if

思考

val bob = Person(26,"Bob")
    print("$bob.id")
    print("${bob.id}")
//輸出的結(jié)果是颤难?

下一章

  • Kotlin for Android使用教程(二)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市已维,隨后出現(xiàn)的幾起案子乐严,更是在濱河造成了極大的恐慌,老刑警劉巖衣摩,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昂验,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡艾扮,警方通過(guò)查閱死者的電腦和手機(jī)既琴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)泡嘴,“玉大人甫恩,你說(shuō)我怎么就攤上這事∽糜瑁” “怎么了磺箕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)抛虫。 經(jīng)常有香客問(wèn)我松靡,道長(zhǎng),這世上最難降的妖魔是什么建椰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任雕欺,我火速辦了婚禮,結(jié)果婚禮上棉姐,老公的妹妹穿的比我還像新娘屠列。我一直安慰自己,他們只是感情好伞矩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布笛洛。 她就那樣靜靜地躺著,像睡著了一般乃坤。 火紅的嫁衣襯著肌膚如雪苛让。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天侥袜,我揣著相機(jī)與錄音蝌诡,去河邊找鬼。 笑死枫吧,一個(gè)胖子當(dāng)著我的面吹牛浦旱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播九杂,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼颁湖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宣蠕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起甥捺,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抢蚀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后镰禾,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體皿曲,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年吴侦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了屋休。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡备韧,死狀恐怖劫樟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情织堂,我是刑警寧澤叠艳,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站易阳,受9級(jí)特大地震影響附较,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜闽烙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一翅睛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧黑竞,春花似錦、人聲如沸疏旨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)檐涝。三九已至遏匆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谁榜,已是汗流浹背幅聘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留窃植,地道東北人帝蒿。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像巷怜,于是被迫代替她去往敵國(guó)和親葛超。 傳聞我的和親對(duì)象是個(gè)殘疾皇子暴氏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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