Kotlin基礎語法

1. 變量

  • val : 常量

聲明初始化後不能再改變的量,類似java中的final

val a: Int = 1  // 指定類型申明,不過這是多餘的操作
val age = 5   // 自動確定爲int
val name: String  // 指定來類型,但是先不初始化
name = "小明"       // 可以延遲初始化
  • var :變量

聲明初始化後還能繼續修改

fun logString() {
        //自動確定爲int
        var ageVar = 5
        //可以指定類型,當然這是多餘的操作
        var money: Double = 11.11
    }

2. 函數

格式:函數fun關鍵字定義 方法名(參數):返回值

如:

fun sum(a: Int, b: Int): Int {
    return a + b
}

3. Null檢測

想必大家在最初瞭解的時候,最看中的則是kotlin自帶null類型檢測了

3.1 聲明檢查

默認聲明後是不允許置爲null的,就下這樣

var a: String = "hello"
a = null//編譯器會直接提示錯誤

null圖

如果需要允許可以爲null,那麼就在類型後加一個?

var a: String? = "hello"
a = null

3.2 在調用方法變量的時候檢查

在調用方法時,也有會提示錯誤

var a: String? = "hello"
var length = a?.length//編譯器會直接提示錯誤

調用方法後提示錯誤

4. 條件表達式

4.1 for循環
4.1.1 日常寫法
  • 增強for循環寫法 ,採用 in 關鍵字(後面會講到),就像java裏採用:方式
var itemF = listOf("1", "2", '3', "4")
# java方式就像 for (String any : itemF) 
for (any in itemF) {
    //輸出遍歷內容
    Log.i(TAG, "any :" + any)
}
  • 獲取index方式遍歷

java裏,我們如果需要index,很多時候會直接採用最普通的for(int i=0;i<itemF.size();i++)這種方式,但是kotlin有另一種方式遍歷到index,如下

//需要獲取index方式遍歷
for (index in itemF.indices) {
    Log.i(TAG, "item at" + index + ", " + itemF[index])
}
4.1.2 配合方法做簡寫

比起java還有更多的一些用法,比如在方法裏可以配合簡寫方式出現

fun maxCompare(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
4.2 while

while常用方法與java基本類似

val items = listOf("1", "2", "3")
var index = 0
while (index < items.size) {
    Log.i(TAG, "while test . item at" + index + ", " + items[index])
            index++
}

4.3 when

採用when關鍵字。與java中的switch很像,替代裏switch,寫起來更簡潔,省去了case和break,還支持lambda,就像下面這樣

val i = 1
when (i) {
    //匹配2
    2 -> {
        Log.i(TAG, "when test . is 2 ")
        }
    //匹配1,lambda方式
    1 -> Log.i(TAG, "when test . is 1 ")
    //都不匹配
    else -> Log.i(TAG, " no match")
}

4.4 Ranges

  • in關鍵字,用在條件判斷中。

判斷一個數是否在一個範圍裏(左右均包含)

val x = 5
val y = 4
//判斷x即5,是否在y+1即5到10這個區間裏
if (x in (y + 1)..10) {
    Log.i(TAG, "x in range")
}

非判斷就在in前加一個感嘆號,比如

val x = 5
val y = 4
//即判斷4 不在 3到1的中(3,2,1)
if (x !in (y - 1) downTo 1) {
    Log.i(TAG, "x in range")
}

這裏可以注意到,前面升序的時候我們採用的兩個點,比如從1到10,則爲1…10,但是降序的時候,我們需要用關鍵字 downTo

  • step關鍵字

step可在for循環的時候,如果不想挨個遍歷,可以採用跳躍的方式

//從1遍歷到10,每次間隔2
for (x in 1..10 step 2) {
    Log.i(TAG, "setp2 " + x)
}

//從9遍歷降到0,每次間隔3
for (x in 9 downTo 0 step 3) {
    Log.i(TAG, "setp3 " + x)
}

輸出:

#升序增加2方式
setp2 1
setp2 3
setp2 5
setp2 7
#降序跳躍3方式
setp2 9
setp3 9
setp3 6
setp3 3
setp3 0
  1. 集合

kotlin集合沒有java那麼

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-LzGuqxjV-1575041818924)(https://github.com/nxSin/BlogPic/blob/eaa4b04c4d12bfe7377941928e0e7d07642d104a/kotlin/collection.png?raw=true)]

前面有看到採用了listOf來初始化一個列表,這樣初始化出來的列表是不可變的,可以遍歷操作

//不可變列表
        val nonMutlist = listOf("1", "2", "3", "4")
        nonMutlist.forEach { str -> Log.d(TAG, "遍歷不可變列表:str " + str) }

另外還有一個可變的列表MutableList,其長度內容是

//可變列表
        val mutableList: MutableList<String> = mutableListOf()
        mutableList.add("1")
        mutableList.add("2")
        mutableList.forEach { str -> Log.d(TAG, "遍歷可變列表:str " + str) }

集合類比較常用,這裏先簡單提一下

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