Kotlin-2

1. 四種函數(shù)

package com.brain.day2

/**
 * 四種函數(shù)
 */
fun main(args: Array<String>) {
    saySomething()
    println(saySomethingAndReturnString())
    saySomethingAndInString("Jack")
    println(saySomethingAndInStringReturnString("Tim"))
}

/**
 * 沒有參數(shù)無返回值
 */
fun saySomething() {
    println("Hello World")
}

/**
 * 無參數(shù)有返回值科乎。
 */
fun saySomethingAndReturnString(): String {
    println("saySomethingAndReturnString")
    return "saySomethingAndReturnString"
}

/**
 * 有參數(shù)掰伸,有返回值有序。
 */
fun saySomethingAndInStringReturnString(name: String): String {
    println(name)
    return "You Name $name"
}

fun saySomethingAndInString(name: String) {
    println("You name : $name")
}

2. 字符串模版

package com.brain.day2

/**
 * 字符串模版
 * 格式 : "${變量}"
 * 如果是單獨(dú)一個(gè)變量可以省略 “{}”
 */
fun main(args: Array<String>) {
    val i1 = 12
    val i2 = 13
    val name = "Jack"
    val age = 11

    println("My name is $name , My age is $age")
    println("i1 + i2 = ${i1 + i2}")
}

3. for循環(huán)

package com.brain.day2

/**
 * For循環(huán)
 */
fun main(args: Array<String>) {
    forInFunc()
    forEachFunc()
}

/**
 * 測(cè)試 for in
 */
fun forInFunc() {
    val text = "0123456789"
    // 1. 遍歷所有的元素摔蓝。
    print("所有的元素 : ")
    for (char in text) {
        print(" $char")
    }
    println()

    // 2. 帶有下標(biāo)的元素
    for ((index, char) in text.withIndex()) {
        print("text[${index}]=$char ")
    }
    println()
}

/**
 * 高級(jí)ForEach
 */
fun forEachFunc() {
    val text = "I am Jack"
    // 1. 沒有index
    text.forEach {
        print("$it")
    }
    println()
    // 2. 有 index
    text.forEachIndexed { index, char ->
        print("$index : $char  ")
    }
    println()
}

4. 標(biāo)簽處返回

package com.brain.day2

/**
 * s1和s2兩兩組合有幾種可能
 * 1. 在循環(huán)開始出使用 “l(fā)abel@” 設(shè)置標(biāo)簽。使用"break@label" 跳出循環(huán)
 */
fun main(args: Array<String>) {
    val text1 = "012345"
    val text2 = "012345"

    // 標(biāo)簽處跳轉(zhuǎn)爷恳。
    label1@for (t1 in text1) {
        label2@for (t2 in text2) {
            if (t2 == '3') {
                break@label2
            }
        }
        if (t1 == '3') {
            break@label1
        }
    }
}

5. range區(qū)間

package com.brain.day2

/**
 * [1,100]  包含1 包含100
 * [1,100)  包含1 不包含100 最大99
 */
fun main(args: Array<String>) {

    //定義一個(gè)從1到100的數(shù)據(jù)類型
    //java定義數(shù)組 或者集合 添加元素
    val range = 1..100          // [1,100] 最大100
    val range1 = 1 until 100    // [1,100)  最大99
    val range2 = 10 downTo 1    // [10,1]
    val range3 = 'a'..'z'       // [a,z]
    val range4 = 'a' until 'z'  // [a,z]
    val longRange = 1L..100L    // [1, 100]

    println(range2.last)
    println(range1.last)

    // 區(qū)間的遍歷可以采用For循環(huán)的任何一種形式颤诀。
    range.forEach {  }
    range.forEachIndexed { index, i ->  }
    for (r in range) {

    }
    for ((index, r) in range.withIndex()) {

    }

    // 區(qū)間翻轉(zhuǎn)
    val reversed = range.reversed()
}

6. if語句

package com.brain.day2

/**
 * kotlin的if有返回值  {}最后一行為返回值
 */
fun main(args: Array<String>) {
    val b = 20
    val a = 15
    println(findBig0(a, b))
    println(findBig1(a, b))
    println(findBig2(a, b))
}

/**
 * 標(biāo)準(zhǔn)寫法, 注意只有一行可以省略大括號(hào)掂名。
 */
fun findBig0(a: Int, b: Int):Int {
    if (a > b) {
        return a
    } else {
        return b
    }
}

/**
 * 簡(jiǎn)化 1
 */
fun findBig1(a: Int, b: Int):Int {
    // 類似三木運(yùn)算符
    if (a > b) return a else return b
}

/**
 * 簡(jiǎn)化 2
 */
fun findBig2(a: Int, b: Int):Int {
    return if (a > b) a else b
}




7. 數(shù)組

package com.brain.day2

/**
 * 相同數(shù)據(jù)類型元素的集合
*/
fun main(args: Array<String>) {
    arrayTypeFunc()
    accessArrayElements()
    modifyArrayElements()
}

/**
 * 數(shù)組元素的修改
 * 1. 下標(biāo)
 * 2. set(index, value)
 */
fun modifyArrayElements() {
    //1. index
    val intArrayOf = intArrayOf(12, 13, 11)
    intArrayOf[0] = 0
    // set
    intArrayOf.set(1,1)

    println(intArrayOf[0])
    println(intArrayOf.get(1))
}

/**
 * 遍歷數(shù)組可以使用For循環(huán)
 */
fun accessArrayElements() {
    val intArrayOf = intArrayOf(12, 11, 10)
    for (el in intArrayOf) {

    }

    for ((index, el) in intArrayOf.withIndex()) {

    }

    intArrayOf.forEach {  }
    intArrayOf.forEachIndexed { index, i ->  }
}

/**
 * 數(shù)組定義
 */
private fun arrayTypeFunc() {
    val arr = arrayOf(1, 2)
    //張三  李四  王五
    //定義數(shù)組保存三個(gè)姓名
    val array = arrayOf("張三", "李四", "王五")
    //Boolean
    //Byte
    //Char
    //Short
    //Int
    //Float
    //Double
    //Long
    val booleanArrayOf = booleanArrayOf(true, false, true, false)
    val byteArrayOf = byteArrayOf(0x00, 0x01)
    val charArrayOf = charArrayOf('a', 'z')
    val shortArrayOf = shortArrayOf(11, 12)
    val intArrayOf = intArrayOf(1, 2, 3)
    val floatArrayOf = floatArrayOf(12.11f, 13.11f)
    val doubleArrayOf = doubleArrayOf(12.11, 112.22)
    val longArrayOf = longArrayOf(12L, 12L)
}

8. when表達(dá)式

package com.brain.day2

/**
 * when分支判斷語句
 * switch類似  char short int 枚舉  字符串
 * when表達(dá)式可以支持任意類型以及條件
 */
fun main(args: Array<String>) {
    println(todo(12))
    println(todo1(8))
    println(todo3(2))
}

/**
 * 高級(jí)用法3 返回值
 */
fun todo3(age: Int): String {
    return when (age) {
        in 1..5 -> {
            "1..5"http:// 最后一行是返回之辙喂。
        }
        12 -> "12"
        else -> "else"
    }
}

/**
 * 高級(jí)用法2 不用參數(shù)
 */
fun todo2(age: Int): String {
    when {
        age == 12 -> return "12"
        age in 1..3 -> return "1..3"
        else -> return "else"
    }
}

/**
 * 高級(jí)用法1捶牢, 區(qū)間
 */
fun todo1(age: Int): String {
    when (age) {
        in 1..6 -> return "1~6"
        in 7..10 -> return "7~10"
        12,13 -> return "12,13"
        14 -> return "14"
        else -> return "else"
    }
}

/**
 * 基礎(chǔ)用法
 */
fun todo(age:Int):String{
    when(age) {
        7 -> return "開始上小學(xué)了"  //如果只有一行可以省略{}

        12 -> {
            return "開始上中學(xué)了"
        }
        15 -> {
            return "開始上高中了"
        }
        18 -> {
            return "開始上大學(xué)了"
        }
        else -> {
            return "開始上社會(huì)大學(xué)"
        }
    }
}

9. 函數(shù)表達(dá)式

package com.brain.day2

/**
 * kotlin 函數(shù)和對(duì)象都是一等公民  平等的
 */
fun main(args: Array<String>) {
    println(add0(1, 1))
    println(add1(1, 1))
    println(add2(1, 1))

    // 具名參數(shù)。
    println(add3(b = 22))
    // 可變參數(shù)
    println(add4(1, 2, 3, 4))

}

/**
 * 具名參數(shù) : 指定要賦值的參數(shù)
 */
fun addFunc0() {
    add0(12, b = 12)
}

//----------------- 格式

/**
 * 標(biāo)準(zhǔn)
 */
fun add0(a: Int, b: Int):Int {
    return a + b
}

/**
 * 高級(jí)1 : 如果只有一行代碼巍耗,可以省略大括號(hào)秋麸。
 */
fun add1(a: Int, b: Int): Int = a + b

/**
 * 高級(jí)2 : 返回值也可以省略
 */
fun add2(a: Int, b: Int) = a + b

/**
 * 默認(rèn)參數(shù)
 */
fun add3(a: Int = 12, b: Int) = a + b

/**
 * 可變參數(shù)
 */
fun add4(vararg params: Int): Int {
    var sum = 0
    params.forEach {
        sum += it
    }
    return sum
}

10. 異常處理

package com.brain.day2

/**
 * 異常處理
 */
fun main(args: Array<String>) {
    val a = 1
    val b = 0
    try {
        // 發(fā)生異常了。
        val c = a / b//ArithmeticException   分母為0
    } catch (e: Exception) {
        println("捕獲到異常了")
    }finally {
        println("都會(huì)執(zhí)行的")
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末炬太,一起剝皮案震驚了整個(gè)濱河市灸蟆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亲族,老刑警劉巖次乓,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吓歇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡票腰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門女气,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杏慰,“玉大人,你說我怎么就攤上這事炼鞠≡道模” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵谒主,是天一觀的道長(zhǎng)朝扼。 經(jīng)常有香客問我,道長(zhǎng)霎肯,這世上最難降的妖魔是什么擎颖? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮观游,結(jié)果婚禮上搂捧,老公的妹妹穿的比我還像新娘。我一直安慰自己懂缕,他們只是感情好允跑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搪柑,像睡著了一般聋丝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上工碾,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天弱睦,我揣著相機(jī)與錄音,去河邊找鬼倚喂。 笑死每篷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的端圈。 我是一名探鬼主播焦读,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼舱权!你這毒婦竟也來了矗晃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤宴倍,失蹤者是張志新(化名)和其女友劉穎张症,沒想到半個(gè)月后仓技,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俗他,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年脖捻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兆衅。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡地沮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出羡亩,到底是詐尸還是另有隱情摩疑,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布畏铆,位于F島的核電站雷袋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏辞居。R本人自食惡果不足惜楷怒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望速侈。 院中可真熱鬧率寡,春花似錦、人聲如沸倚搬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽每界。三九已至捅僵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間眨层,已是汗流浹背庙楚。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留趴樱,地道東北人馒闷。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像叁征,于是被迫代替她去往敵國和親纳账。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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

  • Android Kotlin第二篇捺疼,接下來讓我們一起認(rèn)識(shí)下kotlin里的函數(shù)和Kotlin新特性之一Lambda...
    小強(qiáng)彬閱讀 840評(píng)論 0 6
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法疏虫,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法卧秘,異常的語法呢袱,線程的語...
    子非魚_t_閱讀 31,587評(píng)論 18 399
  • //Clojure入門教程: Clojure – Functional Programming for the J...
    葡萄喃喃囈語閱讀 3,622評(píng)論 0 7
  • 你把一些人好心當(dāng)成朋友 他卻也只不過把你當(dāng)成一個(gè)分文不值的塑料袋 用的時(shí)候和你親近 不用的時(shí)候也只不過隨手扔...
    Joe_太君閱讀 307評(píng)論 0 0
  • 大家好,我是宋曉霞翅敌,來自美麗的濱州羞福,今天我們來談?wù)勲x開。 明天就離開爸媽家哼御,回我自己的小家了坯临,第一次,有不舍得感覺...
    安安木棉閱讀 155評(píng)論 0 0