重拾Kotlin(3)-陣列、字串模板

pswyjz發表於2021-09-09

圖片描述

一、陣列

Kotlin 中的陣列是帶有型別引數的類,其元素型別被指定為相應的型別引數,使用 Array 類來表示, Array 類定義了 get 與 set 函式(按照運算子過載約定這會轉變為 [ ] )以及 size 屬性等

建立陣列的方法有以下幾個:

  1. 用 arrayOf 函式建立一個陣列,包含的元素是指定為該函式的實參
  2. 用 arrayOfNulls 建立一個給定大小的陣列,包含的元素均為 null,只能用來建立包含元素型別可空的陣列
  3. 呼叫 Array 類的構造方法,傳遞陣列的大小和一個 lambda 表示式,呼叫 lambda 表示式來建立每一個陣列元素
    //包含給定元素的字串陣列
    val array1 = arrayOf("leavesC", "葉", "")

    array1[0] = "leavesC"
    println(array1[1])
    println(array1.size)

    //初始元素均為 null ,大小為 10 的字元陣列
    val array2 = arrayOfNulls<String>(10)

    //建立從 “a” 到 “z” 的字串陣列
    val array3 = Array(26) { i -> ('a' + i).toString() }

需要注意的是,陣列型別的型別引數始終會變成物件型別,因此宣告 Array< Int > 將是一個包含裝箱型別(java.lang.Integer)的陣列。如果想要建立沒有裝箱的基本資料型別的陣列,必須使用一個基本資料型別陣列的特殊類

為了表示基本資料型別的陣列,Kotlin 為每一種基本資料型別都提供了若干相應的類。例如,有 IntArray、ByteArray、BooleanArray 等型別,這些型別都會被編譯成普通的 Java 基本資料型別陣列,比如 int[]、byte[]、boolean[] 等,這些陣列中的值儲存時沒有進行裝箱,而是使用了可能的最高效的方式

要建立一個基本資料型別的陣列,有以下幾種方式:

  1. 向對應型別的類(如 IntArray)的建構函式傳遞陣列大小,這將返回一個使用對應基本資料型別預設值初始化好的陣列
  2. 向對應型別的類(如 IntArray)的建構函式傳遞陣列大小以及用來初始化每個元素的 lambda
  3. 向工廠函式(如 charArrayOf)傳遞變長引數的值,從而得到指定元素值的陣列
    //指定陣列大小,包含的元素將是對應基本資料型別的預設值(int 的預設值是 0)
    val intArray = IntArray(5)

    //指定陣列大小以及用於初始化每個元素的 lambda
    val doubleArray = DoubleArray(5) { Random().nextDouble() }

    //接收變長引數的值來建立儲存這些值的陣列
    val charArray = charArrayOf('H', 'e', 'l', 'l', 'o')

二、字串

Kotlin 與 Java 一樣用 String 型別來表示字串,字串是不可變的,可以使用索引運算子訪問:[] 來訪問包含的單個字元,也可以用 for 迴圈來迭代字串,此外也可以用 + 來連線字串

    val str = "leavesC"
    println(str[1])
    for (c in str) {
        println(c)
    }
    val str1 = str + " hello"

三、字串模板

Kotlin 支援在字串字面值中引用區域性變數,只需要在變數名前加上字元 $ 即可,此外還可以包含用花括號括起來的表示式,此時會自動求值並把結果合併到字串中

    val intValue = 100
    //可以直接包含變數
    println("intValue value is $intValue") //intValue value is 100
    //也可以包含表示式
    println("(intValue + 100) value is ${intValue + 100}")   //(intValue + 100) value is 200

如果你需要在原始字串中表示字面值($)字元(它不支援反斜槓轉義),可以用下列語法:

    val price = "${'$'}100.99"
    println(price)  //$100.99

重拾 Kotlin 系列文章目錄:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/755/viewspace-2822904/,如需轉載,請註明出處,否則將追究法律責任。

相關文章