Kotlin數(shù)據(jù)容器(2)??基本數(shù)據(jù)類(lèi)型數(shù)組

  • 基本數(shù)據(jù)類(lèi)型數(shù)組
  • 3種基本數(shù)據(jù)類(lèi)型數(shù)組的創(chuàng)建方法

一镇辉、基本數(shù)據(jù)類(lèi)型數(shù)組

??kotlin 編譯器將元素是基本類(lèi)型的 kotlin 對(duì)象數(shù)組編譯成 Java 中的包裝類(lèi)數(shù)組,而 Java 中的包裝類(lèi)數(shù)組與 Java 中的基本數(shù)據(jù)類(lèi)型數(shù)組相比,包裝類(lèi)數(shù)組數(shù)據(jù)存儲(chǔ)空間占用較大,運(yùn)算效率差。因此,kotlin 中提供了8種基本數(shù)據(jù)類(lèi)型數(shù)組钻蹬,分別對(duì)應(yīng) Java 中的8種基本數(shù)據(jù)類(lèi)型數(shù)組。例如:kotlin 中的 IntArray 被編譯為 Java 中的 int[]數(shù)組凭需。

??下面是 Kotlin 中8種數(shù)據(jù)類(lèi)型數(shù)組问欠,與編譯后的 Java 代碼比較。

// kotlin 8種基本數(shù)據(jù)類(lèi)型數(shù)組

fun main(args: Array<String>?) {
    val ints: IntArray = intArrayOf(1)
    val shorts: ShortArray = ShortArray(1)
    val btyes: ByteArray = byteArrayOf(3)
    val longs: LongArray = LongArray(4) { (it * it).toLong() }

    val floats: FloatArray = floatArrayOf(23.2f)
    val doubles: DoubleArray = doubleArrayOf(3.3)
    val chars: CharArray = charArrayOf('a')
    val booleans: BooleanArray = booleanArrayOf(false)
}
// kotlin 通過(guò)轉(zhuǎn)換編譯后的 java 代碼

@Metadata(
   mv = {1, 1, 15},
   bv = {1, 0, 3},
   k = 2,
   d1 = {"\u0000\u0014\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u0011\n\u0002\u0010\u000e\n\u0002\b\u0006\u001a\u001b\u0010\u0000\u001a\u00020\u00012\u000e\u0010\u0002\u001a\n\u0012\u0004\u0012\u00020\u0004\u0018\u00010\u0003¢\u0006\u0002\u0010\u0005\u001a\u001f\u0010\u0006\u001a\u00020\u0001\"\u0004\b\u0000\u0010\u00072\f\u0010\b\u001a\b\u0012\u0004\u0012\u0002H\u00070\u0003¢\u0006\u0002\u0010\t¨\u0006\n"},
   d2 = {"main", "", "args", "", "", "([Ljava/lang/String;)V", "printArray", "T", "array", "([Ljava/lang/Object;)V", "kotlin_module"}
)
public final class WwwwKt {
   public static final void printArray(@NotNull Object[] array) {
      Intrinsics.checkParameterIsNotNull(array, "array");
      boolean var3 = false;
      String printStr = array.length == 0 ? "[]" : ArraysKt.joinToString$default(array, (CharSequence)", ", (CharSequence)"[", (CharSequence)"]", 0, (CharSequence)null, (Function1)null, 56, (Object)null);
      boolean var2 = false;
      System.out.println(printStr);
   }

   public static final void main(@Nullable String[] args) {
      int[] var10000 = new int[]{1};
      short[] shorts = new short[1];
      byte[] var16 = new byte[]{3};
      int size$iv = 4;
      int $i$f$LongArray = false;
      long[] result$iv = new long[size$iv];
      int i$iv = 0;

      for(int var9 = result$iv.length; i$iv < var9; ++i$iv) {
         int var11 = false;
         long var14 = (long)(i$iv * i$iv);
         result$iv[i$iv] = var14;
      }

      float[] var17 = new float[]{23.2F};
      double[] var18 = new double[]{3.3D};
      char[] var19 = new char[]{'a'};
      boolean[] var20 = new boolean[]{false};
   }
}

??kotlin 中8中基本數(shù)據(jù)類(lèi)型數(shù)組與 Java 中基本數(shù)據(jù)類(lèi)型數(shù)組的對(duì)應(yīng)關(guān)系

Kotlin 基本數(shù)據(jù)類(lèi)型數(shù)組 Java 中基本數(shù)據(jù)類(lèi)型數(shù)組
ByteArray byte[]
ShortArray short[]
IntArray int[]
LongArray long[]
FloatArray float[]
DoubleArray double[]
CharArray char[]
BooleanArray boolean[]

二粒蜈、3種基本數(shù)據(jù)類(lèi)型數(shù)組的創(chuàng)建方法

每一種基本數(shù)據(jù)類(lèi)型數(shù)組的創(chuàng)建都有3中方式顺献,一下是以 Int 類(lèi)型為例:

  • intArrayOf(vararg elements: Int) 工廠函數(shù):指定數(shù)組元素列表,創(chuàng)建元素類(lèi)型為 Int 的數(shù)組枯怖,vararg 表明參數(shù)個(gè)數(shù)是可變的注整。

  • IntArray(size: Int) 構(gòu)造函數(shù):size 參數(shù)指定數(shù)組大小,創(chuàng)建元素為 Int 的數(shù)組度硝,數(shù)組中的元素為該類(lèi)型默認(rèn)值肿轨,Int 的默認(rèn)值為0。

  • IntArray(size: Int, init: (Int) -> Int) 構(gòu)造函數(shù):通過(guò) size 參數(shù)指定數(shù)組大小蕊程,init 參數(shù)指定一個(gè)用于初始化元素的函數(shù)椒袍,實(shí)際使用時(shí)經(jīng)常是 Lambda 表達(dá)式,索引值從0開(kāi)始藻茂。

fun <T> printArray(iterator: Iterator<T>) {
    val builder = StringBuilder("[")
    var first = true
    while (iterator.hasNext()) {
        if (!first) builder.append(", ")
        builder.append(iterator.next())
        first = false
    }
    builder.append("]")
    println(builder.toString())
}

fun main(args: Array<String>?) {
    val array1 = intArrayOf(1, 2, 4, 5, 6)
    val array2 = CharArray(3)
    array2[0] = 'a'
    array2[1] = 'b'
    array2[2] = 'c'
    val array3 = IntArray(5) { it * it } // 尾隨lambda表達(dá)式
    val array4 = BooleanArray(0)
    val array5 = IntArray(3)
    printArray(array1.iterator())
    printArray(array2.iterator())
    printArray(array3.iterator())
    printArray(array4.iterator())
    printArray(array5.iterator())
}

2019-06-12 11:28:51.035 7129-7129/cn.ak.kot I/System.out: [1, 2, 4, 5, 6]
2019-06-12 11:28:51.035 7129-7129/cn.ak.kot I/System.out: [a, b, c]
2019-06-12 11:28:51.035 7129-7129/cn.ak.kot I/System.out: [0, 1, 4, 9, 16]
2019-06-12 11:28:51.036 7129-7129/cn.ak.kot I/System.out: []
2019-06-12 11:28:51.037 7129-7129/cn.ak.kot I/System.out: [0, 0, 0]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末驹暑,一起剝皮案震驚了整個(gè)濱河市玫恳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌优俘,老刑警劉巖京办,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異帆焕,居然都是意外死亡惭婿,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)视搏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)审孽,“玉大人县袱,你說(shuō)我怎么就攤上這事浑娜。” “怎么了式散?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵筋遭,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我暴拄,道長(zhǎng)漓滔,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任乖篷,我火速辦了婚禮响驴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撕蔼。我一直安慰自己豁鲤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布鲸沮。 她就那樣靜靜地躺著琳骡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪讼溺。 梳的紋絲不亂的頭發(fā)上楣号,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音怒坯,去河邊找鬼炫狱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛剔猿,可吹牛的內(nèi)容都是我干的视译。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼艳馒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼憎亚!你這毒婦竟也來(lái)了员寇?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤第美,失蹤者是張志新(化名)和其女友劉穎蝶锋,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體什往,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扳缕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了别威。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躯舔。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖省古,靈堂內(nèi)的尸體忽然破棺而出粥庄,到底是詐尸還是另有隱情,我是刑警寧澤豺妓,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布惜互,位于F島的核電站,受9級(jí)特大地震影響琳拭,放射性物質(zhì)發(fā)生泄漏训堆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一白嘁、第九天 我趴在偏房一處隱蔽的房頂上張望坑鱼。 院中可真熱鬧,春花似錦絮缅、人聲如沸鲁沥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)黍析。三九已至,卻和暖如春屎开,著一層夾襖步出監(jiān)牢的瞬間阐枣,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工奄抽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔼两,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓逞度,卻偏偏與公主長(zhǎng)得像额划,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子档泽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

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