Kotlin—基本語法 (五)

這篇博客講表達式、語句和函數,講的有點多,請認真讀。

此外這系列博客還不完善,請等待我完善好。當你發現這行字沒有了,就是穩定了,謝謝。

一、表達式和語句

1、if

在Kotlin中if就是語句也是表達式。(表達式有返回值,語句沒有),所以比Java更加靈活和簡便些。

1.1 if語句使用方式

if語句很簡單,和Java也一樣。接下有幾個栗子吃

栗子1:

fun main(args: Array<String>) {

    val a = 90

    if (a > 100) {
        println("a>100")
    }

    if (a < 100)
        println("a<100")

    if (a == 100) println("a<100")

}

栗子2:

fun main(args: Array<String>) {

    val a = 90

    if (a > 100) {
        println("a>100")
    } else {
        println("a<100")
    }

}

栗子3:

fun main(args: Array<String>) {

    val a = 90

    if (a > 100) {
        println("a>100")
    } else if (a == 100) {
        println("a=100")
    } else if (a < 100)
        println("a<100")
}

都是一些正常使用。

1.2 if表達式

Kotlin的簡化可能會讓你感覺不規範,或者難以接受,哈哈。看栗子

栗子

fun main(args: Array<String>) {
    val a = 90
    var b = if (a < 100) {
        println("a<100")
        "b大於100"
    } else {
        println("a>100")
        "b小於於100"
    }
    println(b)
}

其它的依次類推。

2 when

Kotlin中沒有switch語句,但有更好用的when。when和if一樣,既可以是語句,有可以是表達式。

2.1 when語句使用

我寫了一個比較全的栗子

fun main(args: Array<String>) {
    val a = 90
    var b = ""
    when (a / 10) {
        10 -> {
            b = "a=10"
        }
        9 -> b = "9"
        8, 7 -> "b=8或者7"
        else -> "b<7"
    }
    println(b)
}

2.2 when 表達式

fun main(args: Array<String>) {
    val a = 90
    var b = when (a) {
        100 -> "b=100"
        90 -> "b=90"
        80, 70 -> "b在80-70之間"
        else -> "b<60"
    }
    println(b)
}

3 while 和 do whlie語句

while和do whlie是Kotlin的循環語句,它們都是語句,沒有表達式。也和Java的使用方式一樣,同時也可減少代碼。

3.1while語句使用

fun main(args: Array<String>) {
    var i=0
    while(i+1<100){
        i++
    }
    println(i)
}

3.2 do while語句使用

 下面的例子,清楚的說明了do while至少執行一次

fun main(args: Array<String>) {
    var i = 0
    do {
        println("第${i}次")
        ++i
        println("i=$i")
    } while (i == 0)

}

4. for循環

Kotlin中的for循環和Java就大不相似了,所以好都Java工程師,一使用for就對kotlin有了反感。

看看kotlin的for循環怎麼寫吧!

栗子1:

遍歷區間

fun main(args: Array<String>) {

    for (a in 1..100) {  // 定義了變量a
        // 一個區間類似於集合,區間裏保存這1到100的整數
        println(a)       // 把區間的數遍歷賦值給a
    }

}

栗子2:

遍歷集合

​
fun main(args: Array<String>) {
    val intArray= intArrayOf(11,12,13,14,15) // 定義集合
    for (a in intArray) {  // 定義了變量a
        println(a)       // 把集合的數遍歷賦值給a
    }

}

 

栗子3:

獲取集合下標和值的遍歷

fun main(args: Array<String>) {
    val intArray = intArrayOf(11, 12, 13, 14, 15) // 定義集合
    for (a in intArray.indices) {    //indices爲下標,集合和數組都有這個量
        println("集合下標${a}的值爲${intArray[a]}")
    }

}

 

5.返回和跳轉

Kotlin 有三種結構化跳轉表達式:

  • return。默認從最直接包圍它的函數或者匿名函數返回。
  • break。終止最直接包圍它的循環。
  • continue。繼續下一次最直接包圍它的循環。

break和在Java中基本使用一樣。

break 中斷循環,退出循環

fun main(args: Array<String>) {
    for (a in 1..100) {
        if (a == 5) {
            break
        }
        println(a)
    }

}

continue  跳過本次循環,繼續下次

fun main(args: Array<String>) {
    for (a in 1..10) {
        if (a == 5) {
            continue
        }
        println(a)
    }

}

 

6.區間

什麼是區間,如果你沒有一點概念,請查看數學上的區間。在數學上區間很容易理解,在編程更容易理解。就是一組整數或者是字符,別的不行。

區間還分爲閉區間和半開區間兩種

6.1 閉區間和半開區

閉區間和半開區的區別就是包括的範圍。

閉區間:比較容易,就是指從指定的數開始到指定的書結束。包括指定的頭和尾巴。使用..表示      栗子1

半開區間:就是從指定的數開始到指定的數結束,但不包括最後的數。使用until 表示                      栗子2

如果你學過Java肯定知道包左不包右的意思,這裏相同。

栗子1:

fun main(args: Array<String>) {
    for (a in 1..5) {
        println(a)
    }

}

結果:

1
2
3
4
5

栗子2:

fun main(args: Array<String>) {
    for (a in 1 until 5){
        println(a)
    }

}

結果:

1
2
3
4

沒有5!

二、函數

在Kotlin編程函數中函數是不可少的。它比Java的方法靈活和多變。

它可以獨立在類和接口外,成爲頂層函數,也可以嵌套使用。這是Java的方法做不到的。

2.1 主函數

主函數就是我們之前經常出現的,各個編程語言都有,基本相似。它是程序的主入口,沒有它就無法開始。

fun main(args: Array<String>) {
   
}

比較簡單的函數,它由fun 關鍵字、方法名mian、args變量名、ArrayString變量類型和小括號,大括號組成。

是一個簡單常見的函數,它有方法名和參數,所以是有參數函數。

2.2 有參數函數

有參數的方法,也很簡單,大多數和主函數差不多。但是與Java不同的就是靈活性。

fun main(args: Array<String>) {
    add(b=10, a=20)
}

fun add(a: Int, b: Int) {
    a + b
}

你可以直接指定參數是誰的,而且順序可以改變。但是要注意使用中,一旦前面指定了參數是誰的,後面的就要指定,否則就會報錯的。

注意這裏的函數都是頂層函數,它不在任何類裏。

你可能感覺這沒什麼用,接下你可以配合給函數默認值使用

2.3 默認值函數

函數可以直接賦一個默認值,怎麼使用。來看

fun main(args: Array<String>) {
    add(1,2)
}

fun add(a: Int, b: Int=1) {
    a + b
}

這時如果你使用函數的時候,就可以先不給值。當然這個例子給了,給了就會把默認值覆蓋。這樣做可以防止大量的函數重載。對kotlin函數也可以重載。你說不知道上面的默認值覆蓋了沒有?馬上就知道了。

2.4 返回值函數

在使用函數很情況,我們還需要把處理的結果拿到,這樣就用到了帶返回值的函數。

fun add(a: Int, b: Int = 1): Int {
    return a + b
}

很簡單,在結束括號後加個冒號和返回值類型,然後return返回就可以了。這樣你就知道這個函數的默認值會不會被覆蓋了。

fun main(args: Array<String>) {
   println( add(1, 2))
}

fun add(a: Int, b: Int = 1): Int {
    return a + b
}

結果:

覆蓋了吧。有返回值函數,弄明白了,你會需要明白無返回值函數。

2.5 無返回值函數

無返回值函數,其實就是有返回值了。它返回的是Unit類型,kotlin建議你直接忽略,因爲它是無意義的返回值。

fun void ():Unit{

}

此時編譯器會提示你省略Unit。

在Kotlin還有一種特殊意義的返回值,它只能用用函數的返回。

2.6 永遠不會正常返回函數

這個函數很特殊,你基本使用不到。它用與封裝框架的時候使用。

fun Null ():Nothing{

     throw NullPointerException()
}

 這裏直接返回了一個異常。在Kotlin中函數返回異常。

2.7 表達式函數

表達式函數也是kotlin一種極間的方式。

fun add(): String {
    return "add"
}


fun Add()= "Add"

 直接=,大大簡化了簡單函數的代碼量。

2.8 局部函數

就是函數嵌套,在Java中的不可能的方法裏寫方法。

fun add() {
    fun Add() = "Add"
}

2.9 匿名函數

就是沒有名字的函數

fun add() {
    fun () = "Add"
}

裏面的函數,已經沒有了名字。

今天講的比較多希望你可一認真的看。

由於工作需要,更新可能會很慢。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章