Kotlin的基本用法

1. 環(huán)境配置

基本的配置步驟很容易在網(wǎng)上找到葛超,就不詳細(xì)說明了。
推薦配置:打開模塊下的build.gradle文件绞蹦,在apply plugin: 'kotlin-android'下面加入一行:apply plugin: 'kotlin-android-extensions'。這是一個Kotlin的擴(kuò)展模塊,可以讓Activity自動關(guān)聯(lián)xml布局中的View而不需要findViewById全景。

2. 將java文件轉(zhuǎn)化為kotlin文件的方法

  • 在AS下通過快捷鍵Ctrl+Shift+A打開FindAction,輸入Convert Java File to Kotlin File 可以將項(xiàng)目中的java文件轉(zhuǎn)換為kotlin文件。
  • 在菜單欄中點(diǎn)擊“Code”菜單項(xiàng)丽蝎,選擇“Convert Java File to Kotlin File”即可根據(jù)之前配置將已有的Java文件轉(zhuǎn)換為Kotlin文件。

3. kotlin的基本用法

1.語句的結(jié)尾不用分號

2.定義

  • 定義變量和常量:在Kotlin中常量用val聲明膀藐,變量用var聲明屠阻,關(guān)鍵字在前面,類型以冒號:隔開在后面额各,也可以省略直接賦值国觉,類型后帶問號?表示可為空類型(默認(rèn)空安全)。
    private var str: String? = null
    private var str1: String? = "hello world"
    private var str2 = "hello world"
    private val arrs = Array(3) { Array(2) { IntArray(1) } }
  • 定義方法: 在Kotlin中方法用fun聲明虾啦,參數(shù)名在前麻诀,類型以冒號:隔開在后面。參數(shù)后冒號隔開的是返回值的類型缸逃。返回值為空可以省略针饥。函數(shù)體可以是表達(dá)式,并可從中推斷出返回值類型需频。函數(shù)參數(shù)可以設(shè)置默認(rèn)值,當(dāng)參數(shù)被忽略時(shí)會使用默認(rèn)值丁眼。這樣相比其他語言可以減少重載。
fun sum(a: Int = 0, b: Int = 1): Int {
     return a+b
}
fun sum1(a: Int, b: Int) = a + b
fun sum2(a: Int, b: Int){
println(a+b)
}
  • 定義類:在Kotlin中屬性自動生成Java的getter/setter方法昭殉,方便在Java中調(diào)用苞七,更方便賦值。括號內(nèi)的參數(shù)代表構(gòu)造方法的參數(shù)挪丢。
class User(name: String) {
    var name: String? = null
    var age: String? = null
}
//賦值
user.name = "zjj"
user.age = "21"
//取值
val name = user.name
val age = user.age

3. 使用 this@lable 作為 lable

為了在范圍外部(一個類蹂风,或者表達(dá)式函數(shù),或者帶標(biāo)簽的擴(kuò)展字面函數(shù))訪問 this 乾蓬,我們需要在

class User {
    inner class State{
        fun getUser(): User{
            //返回User
            return this@User
        }
        fun getState(): State{
            //返回State
            return this@State
        }
    }
}

4. 字符串模板

在Java中拼接字符串的代碼可讀性都很差惠啄,在Kotlin字符串拼接變得非常簡潔,只需用$后面加上參數(shù)名任内,復(fù)雜的參數(shù)要加上{}

var userInfo = "name:${user.name},  age:$age"

5. Ranges(范圍)

for (i in 4 downTo 1) print(i) // prints "4321"
for (i in 1..4 step 2) print(i) // prints "13"
for (i in (1..4).reversed()) print(i) // prints "4321"

6. 條件

if...else 正常使用撵渡,不過移除了switch用更強(qiáng)大的when替代,when子式可以是常量死嗦、變量趋距、返回?cái)?shù)值的表達(dá)式、返回Boolean值的表達(dá)式越除,強(qiáng)大到用來替換if...else if

var x = 10
when (x) {
    //常量
    2 -> println("等于2")
    //數(shù)值表達(dá)式
    if (x > 0) 1 else -1 -> println("大于0并等于1节腐,或小于0并等于-1")
    //Boolean類型表達(dá)式
    in 1..5 -> println("范圍匹配1-5")
    !in 6..9 -> println("不是6-9")
    is Int -> println("類型判斷")
    else -> println("else")
}
// 代替if...else if
when{
    x > 6 && x <= 10  ->  println("大于6小于等于10")
    x < 6 -> println("小于6")
    else -> println("else")
}

7. 循環(huán)

while 和 do...while 同Java并無區(qū)別外盯,for則有很大改變并多出了幾個變種

val list = ArrayList<String>()
//遞增for (int i = 0; i < list.size(); i++)
for (i in list.indices) {
   print(list[i])
}
//遞增for (int i = 2; i < list.size(); i++)
for (i in 2..list.size-1) {
   print(list[i])
}
//遞減for (int i = list.size(); i >= 0; i--)
for (i in list.size downTo 0) {
    print(list[i])
}
//操作列表內(nèi)的對象
for (item in list) {
    print(item)
}

8. 返回和跳轉(zhuǎn)

在 Kotlin 中表達(dá)式可以添加標(biāo)簽,標(biāo)簽通過 @ 結(jié)尾來表示翼雀。
現(xiàn)在我們可以用標(biāo)簽實(shí)現(xiàn) break 或者 continue 的快速跳轉(zhuǎn):

loop@ for (i in 1..100) {
    for (j in i..100) {
        if (...)
            break@loop
    }
}

break 是跳轉(zhuǎn)標(biāo)簽后面的表達(dá)式饱苟,continue 是跳轉(zhuǎn)到循環(huán)的下一次迭代。

參考文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锅纺,一起剝皮案震驚了整個濱河市掷空,隨后出現(xiàn)的幾起案子肋殴,更是在濱河造成了極大的恐慌囤锉,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件护锤,死亡現(xiàn)場離奇詭異官地,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)烙懦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門驱入,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人氯析,你說我怎么就攤上這事亏较。” “怎么了掩缓?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵雪情,是天一觀的道長。 經(jīng)常有香客問我你辣,道長巡通,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任舍哄,我火速辦了婚禮宴凉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘表悬。我一直安慰自己弥锄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布蟆沫。 她就那樣靜靜地躺著籽暇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饥追。 梳的紋絲不亂的頭發(fā)上图仓,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機(jī)與錄音但绕,去河邊找鬼救崔。 笑死惶看,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的六孵。 我是一名探鬼主播纬黎,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼劫窒!你這毒婦竟也來了本今?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤主巍,失蹤者是張志新(化名)和其女友劉穎冠息,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體孕索,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逛艰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搞旭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片散怖。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖肄渗,靈堂內(nèi)的尸體忽然破棺而出镇眷,到底是詐尸還是另有隱情,我是刑警寧澤翎嫡,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布欠动,位于F島的核電站,受9級特大地震影響钝的,放射性物質(zhì)發(fā)生泄漏翁垂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一硝桩、第九天 我趴在偏房一處隱蔽的房頂上張望沿猜。 院中可真熱鬧,春花似錦碗脊、人聲如沸啼肩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祈坠。三九已至,卻和暖如春矢劲,著一層夾襖步出監(jiān)牢的瞬間赦拘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工芬沉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留躺同,地道東北人阁猜。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像蹋艺,于是被迫代替她去往敵國和親剃袍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

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

  • 前言 人生苦多捎谨,快來 Kotlin 民效,快速學(xué)習(xí)Kotlin! 什么是Kotlin涛救? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,218評論 9 118
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法畏邢,類相關(guān)的語法,內(nèi)部類的語法州叠,繼承相關(guān)的語法棵红,異常的語法,線程的語...
    子非魚_t_閱讀 31,665評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理咧栗,服務(wù)發(fā)現(xiàn),斷路器虱肄,智...
    卡卡羅2017閱讀 134,715評論 18 139
  • Google在今年的IO大會上宣布致板,將Android開發(fā)的官方語言更換為Kotlin,作為跟著Google玩兒An...
    藍(lán)灰_q閱讀 76,925評論 31 489
  • 呃咏窿,好像認(rèn)識這么多年了斟或,還真沒認(rèn)真的給你寫過啥,總是你一直嘮叨著讓我減肥集嵌,讓我努力變漂亮點(diǎn)萝挤,我好像到現(xiàn)在都還沒做到...
    HelloHongKong閱讀 217評論 0 0