前言
由于最近項(xiàng)目做完了加上網(wǎng)上各種文章安利kotlin的強(qiáng)大后,我也開始了我的kotlin學(xué)習(xí)之旅:) 學(xué)習(xí)的主要資料是官方參考手冊的中文文檔,所以內(nèi)容也基本出自官方文檔宰僧。
- 定義包
package com.djc.kotlin.kotlin;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
- 定義函數(shù)
/**
* 定義一個(gè)求和函數(shù)
* 返回值為Int
*/
fun test(a: Int, b: Int): Int {
return a + b
}
/**
* 直接將表達(dá)式作為返回結(jié)果
*/
fun test1(a: Int, b: Int): Int = a + b
方法得定義和java比起來我覺得更為簡單,甚至返回值類型也是可以省略的。
定義字段
kotlin用val和var關(guān)鍵字來定義字段油挥,val可以當(dāng)作是java里的final來修飾,也就是用來定義常量捞烟,而var就是定義變量。補(bǔ)充說明一下,用于val是常量,所以val修飾的字段是沒有set方法的。條件控制語句
在kotlin里if 就是一個(gè)表達(dá)式盈魁,就是說它會有一個(gè)返回值:
if(a>b)
max = a
if的分支還是可以代碼塊,最后的表達(dá)式作為代碼塊的返回值:
var max = if (a>b){
println("a= $a")
a
}else{
println("a= $b")
b
}
這里說說我比較喜歡的一個(gè)kotlin特性--字符串模板 一個(gè)標(biāo)準(zhǔn)的字符串模板表達(dá)式由一個(gè)$加上簡單的名稱構(gòu)成 就像上面代碼的a=$a一樣
- null安全
這也是kotlin的特性之一窃诉,想一想我們在java里進(jìn)行的各種null安全判斷,有時(shí)候覺得生無可戀好嗎
var a :String = "test"
a = null //編譯報(bào)錯(cuò)
var a :String? = "test"
a = null//編譯不報(bào)錯(cuò)
這樣有什么好處呢赤套?其實(shí)相當(dāng)于kotlin幫我們做了安全判斷飘痛,比如你調(diào)用如下代碼:
//ide此時(shí)會提示你使用安全操作符 .? 或者操作符 !容握!
//?意思是如果a非空則返回a.length 否則返回null
//!!操作符 官方文檔上說是給nullPotinerException愛好者使用的 - - 如果你使用!!的話表明這個(gè)表達(dá)式一定不為null宣脉,否則報(bào)空指針異常
val length = a?.length
//當(dāng)然官方還提供了一個(gè)elvis操作符 ?:我覺得類似三目運(yùn)算符的感覺
//意思就是左側(cè)表達(dá)式非空的話就使用它,反則使用一個(gè)非空的表達(dá)式(右側(cè))
val length = a?.length?:-1
總結(jié)
這次只是簡單的介紹了Kotlin的基本知識剔氏,我也是才剛剛開始學(xué)習(xí)塑猖,但是已經(jīng)被kotlin的特性深深吸引了,我也是學(xué)一個(gè)知識點(diǎn)寫一點(diǎn)?? 如有錯(cuò)誤谈跛,歡迎各位指正羊苟。