kotlin筆記--基礎篇

kotlin基礎

變量

  1. 在kotlin中if 是表達式;Java中賦值操做是表達式,而在kotlin中變成了語句java

    • 表達式和語句區別:表達式是有值的,而且能做爲另外一個表達式得一部分使用
  2. kotlin中聲明變量以關鍵字開始,而後是變量名稱,最後能夠加上類型數組

    • 關鍵字:val--表示不可變引用,對應java中的final函數

      ​ var--表示可變引用ui

    • 注意:val引用自身時不變的,可是它指向的對象多是可變的。
    • 若是不指定變量類型,編譯器會分析初始化器表達式的值,並把它做爲變量的類型,若是沒有初始化器,則須要顯式地指定它的類型
  3. 字符串模板:,在變量名稱前加上或者用${}包圍一個表達式spa

    fun main(args: Array<String>) {
        println("Hello, ${if (args.size > 0) args[0] else "someone"}!")
    }
    複製代碼

函數

  1. 用關鍵字fun來聲明函數.net

  2. 能夠定義在文件最外層,沒必要放入類中code

  3. 表達式函數體:若是一個函數體是由單個表達式構成,能夠用這個表達式做爲一個完整的函數體對象

    例如:對以下接口

  4. //代碼體塊
    fun max(a: Int, b: Int): Int {
    	return if (a > b) a else b
    }
    複製代碼
  5. //表達式函數體
    fun max(a: Int, b: Int):Int = if (a > b) a else b
    複製代碼
  6. //表達式函數體+類型推導
    fun max(a: Int, b: Int) = if (a > b) a else b
    複製代碼

  1. 數組就是類element

  2. 只有數據沒有代碼的對象叫作值對象

  3. 屬性:

    • 當聲明屬性的時候,你就聲明瞭對應的訪問器(只讀屬性只有一個getter,而可寫屬性既有getter又有setter).
    • 在kotlin中,能夠直接訪問屬性,好比person.isMarried = false實際調用的是setter
  4. 自定義訪問器

    class Rectangle(val height: Int, val width: Int) {
        val isSquare: Boolean
            get() {
                return height == width
            }
    }
    複製代碼
  5. 標記類實現接口,例如:

    class Num(val value: Int) : Expr
    複製代碼

控制結構

  1. 枚舉類和"when"

    1. when相似於java中的switch但功能更增強大
  2. ifwhen均可以使用代碼塊做爲分支體,在這種狀況下,代碼塊中的最後一個表達式就是結果

  3. for循環和in

    • 區間:本質上是兩個值之間的間隔,一個起始值,一個結束值用..來表示區間

      • Kotlin中區間是閉合的,這就意味這第二個值始終是區間的一部分

      • //從100開始倒着計數而且只記偶數
        for (i in 100 downTo 1 step 2) {
            print(fizzBuzz(i))
        }
        複製代碼
      • 使用until來表示不包含指定結束值得半閉合區間

    • 迭代map

      • //letter表明key, binary表明value, binaryReps表明Map
        for ((letter, binary) in binaryReps) {
            println("$letter = $binary")
        }
        複製代碼
      • 可使用map[key] = value來設置讀取值,binaryReps[c] = binary等價於 binaryReps.put(c, binary)

      • withIndex()在迭代集合時追蹤當前項的下標,不須要建立一個單獨的變量來存儲下標並手動增長他:

        val list = arrayListOf("1", "11", "111")
        for ((index, element) in list.withIndex()) {
            printlin("$index: $element")
        }
        複製代碼
  4. 使用in來檢查集合和區間的成員

    • in運算符來檢查一個值是否在區間中,!n檢查這個值是否不在區間中

智能轉換

  1. is檢查和java中的instanceOf類似,在檢查過變量具備某種類型以後沒必要再顯式地轉換它的類型:編譯器使用智能轉換
  2. as關鍵字來表示到特定類型的顯示轉換

異常處理

  1. 沒必要用new關鍵字來建立異常實例
  2. throw結構是一個表達式,能做爲另外一個表達式的一部分使用
  3. kotlin並不區分受檢異常和未受檢異常,不用指定函數拋出異常,同時也能夠處理也能夠不處理異常

ps:本文參考自:《kotlin實戰》

之後每一週會堅持更新一篇讀書筆記

相關文章
相關標籤/搜索