美文网首页
Kotlin数据容器(2)✔️基本数据类型数组

Kotlin数据容器(2)✔️基本数据类型数组

作者: 狼性代码人 | 来源:发表于2019-06-12 11:29 被阅读0次
  • 基本数据类型数组
  • 3种基本数据类型数组的创建方法

一、基本数据类型数组

  kotlin 编译器将元素是基本类型的 kotlin 对象数组编译成 Java 中的包装类数组,而 Java 中的包装类数组与 Java 中的基本数据类型数组相比,包装类数组数据存储空间占用较大,运算效率差。因此,kotlin 中提供了8种基本数据类型数组,分别对应 Java 中的8种基本数据类型数组。例如:kotlin 中的 IntArray 被编译为 Java 中的 int[]数组。

  下面是 Kotlin 中8种数据类型数组,与编译后的 Java 代码比较。

// kotlin 8种基本数据类型数组

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 通过转换编译后的 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中基本数据类型数组与 Java 中基本数据类型数组的对应关系

Kotlin 基本数据类型数组 Java 中基本数据类型数组
ByteArray byte[]
ShortArray short[]
IntArray int[]
LongArray long[]
FloatArray float[]
DoubleArray double[]
CharArray char[]
BooleanArray boolean[]

二、3种基本数据类型数组的创建方法

每一种基本数据类型数组的创建都有3中方式,一下是以 Int 类型为例:

  • intArrayOf(vararg elements: Int) 工厂函数:指定数组元素列表,创建元素类型为 Int 的数组,vararg 表明参数个数是可变的。

  • IntArray(size: Int) 构造函数:size 参数指定数组大小,创建元素为 Int 的数组,数组中的元素为该类型默认值,Int 的默认值为0。

  • IntArray(size: Int, init: (Int) -> Int) 构造函数:通过 size 参数指定数组大小,init 参数指定一个用于初始化元素的函数,实际使用时经常是 Lambda 表达式,索引值从0开始。

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表达式
    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]

相关文章

  • Kotlin数据容器(2)✔️基本数据类型数组

    基本数据类型数组3种基本数据类型数组的创建方法 一、基本数据类型数组   kotlin 编译器将元素是基本类型的 ...

  • Java基础系列11-数组简介

    一.数组概述 数组是存储同一种数据类型,多个元素的容器。数组即可存储基本数据类型,也可以存储引用数据类型。 数组的...

  • OC中的容器类及其功能方法:数组,字典,集合

    OC中的容器:数组,字典,集合 :容器中只能存储对象,不能存储基本和普通数据类型的数据. # 数组 不可变数组: ...

  • 开发一直使用Java,如何快速了解Kotlin

    1. HelloWorld 2. Kotlin当中的基本数据类型与Java有些不同 Kotlin当中的基本数据类型...

  • kotlin学习笔记一

    1.HelloWorld 2.Kotlin当中的基本数据类型(与Java有些不同) Kotlin当中的基本数据类型...

  • javaSE_day04_数组

    数组: 容器,存储的是 相同数据类型的一组数据。 数组内存: 栈区: 1.存储 基本类型 和 引用; 2.栈小...

  • Kotlin数据容器(1)✔️数组

    对象数组基本数据类型数组   数据容器是基于某种数据结构的,常见的数据结构有数组 (Array)、集 (Set)、...

  • Kotlin学习(一) 数据类型

    Kotlin 数据类型 常用数据类型 Kotlin具有与Java基本数据类型对应的数据类型 Byte Short ...

  • Kotlin 实战语法(四)

    Kotlin Kotlin 实战语法(四) 上一次大家学会了Kotlin的基本数据类型 Kotlin 基本数据类型...

  • 数组

    定义数组容器 * 定义数组容器,要素,强制数据类型的语言 * 必须有数据类型,大小(就是存储数据的个数) * ...

网友评论

      本文标题:Kotlin数据容器(2)✔️基本数据类型数组

      本文链接:https://www.haomeiwen.com/subject/xlykfctx.html