Kotlin 学习--数组

一、关于数组的基础知识和常用方式

复制代码
    /**
     * kotlin 数组
     * 使用arrayOf创建数组,必须指定数组的元素,可以是任意类型
     * */
    val arrayNumber = arrayOf(1, 2, 3, 4)

    /**
     * 集合中的元素可以是任意类型
     * kotlin 中的Any 等价于 java 中的Object 对象的意思
     * */
    val arrayObjects = arrayOf(1, true, "2")

    /**
     * 使用arrayOfNulls 创建空数组
     * 创建一个指定大小的、所有元素都为空的数组,但必须指定集合中的元素类型
     * "?"表示可以为null
     * */
    val arrayOfNulls = arrayOfNulls<String>(5)
    arrayOfNulls[0] = "Study Kotlin 01"
    arrayOfNulls[1] = "Study Kotlin 02"
    arrayOfNulls[2] = "Study Kotlin 03"
    arrayOfNulls[3] = "Study Kotlin 04"
    arrayOfNulls[4] = null

    /**
     * 利用array 的构造函数,动态创建数组
     * 创建一个Array<String>初始化为["0","1","4","9","16"]
     * i=0,1,2,3,4
     * 数组创建的时候会循环5次,i就是数组的下标
     * ->右边的表达式的结果就是数组总当前下标的元素
     * */
    val asc = Array(5) { i -> (i * i).toString() }

    /**
     * 字节数组
     * */
    val bytes = ByteArray(5)
    bytes[0] = 1

    /**
     * 使用IntArray 创建整形数据数组
     * 创建一个长度为5的空的IntArray
     * */
    val intArray2 = IntArray(5)
    intArray2[0] = 1

    /**
     * 创建一个长度为5 都是100 的数组[100,100,100,100,100]
     * */
    val intArr2 = IntArray(5) { 100 }

    /**
     * 创建一个长度为5  的数组[0,2,4,6,8]
     * it:lambda 表达式专有变量,这里指数组下标
     * */
    var intArr3 = IntArray(5) { it * 2 }//
    //var intArr3 = IntArray(5) { i -> i * 2 }

    /**
     * 数组如何进行for循环遍历
     * 依次取出数组中的元素 --for-in的形式
     * */
    for (item in intArr3) {
        println(item)
    }

    /**
     * 根据数组下标取出对应位置的元素
     * */
    for (i in intArr3.indices) {
        println(i.toString() + "->" + intArr3[i])
    }

    /**
     * 同时遍历下标和元素
     * */
    for ((index, item) in intArr3.withIndex()) {
        println("$index->$item")
    }

    /**
     * foreach
     * */
    intArr3.forEach {
        println("forEach->$it")//it 代表数组的元素
    }

    /**
     * foreach增强版
     * */
    intArr3.forEachIndexed { index, item ->
        println("index->$index  item->$item")
    }
相关推荐
2601_949950635 分钟前
成绩提升不靠盲目刷题:用练题簿找准真正的薄弱知识点
学习·小程序·刷题·小程序推荐
步十人8 分钟前
DeepRead-项目介绍
学习
七牛开发者23 分钟前
解读 Cordis:dsh 一切皆插件背后的运行时设计
前端·javascript·后端
YM52e29 分钟前
鸿蒙 ArkTS 实战|网络常用漫剧主角名称分类表:26 位主角 8 大分类 + 搜索筛选
学习·华为·harmonyos
雷工笔记30 分钟前
KingFusion驾驶舱-产能信息模块开发实战
javascript
深蓝海拓1 小时前
基于QtPy (PySide6) 的PLC-HMI工程实战记录(五)为当前动作画面的信号连接变量
网络·笔记·python·学习·pyqt
云贝教育-郑老师1 小时前
Oracle 块清除(Block Cleanout):commit 之后,数据块里的“战场“谁来打扫?
数据库·学习·oracle
敢敢のwings2 小时前
世界模型与FlashWorld:从“在梦中学习“到秒级3D场景生成
android·学习·3d
那年窗外下的雪.2 小时前
AIDC 学习日志|第 14 天|MAC Flapping 与 EVPN 多归属分层排障
网络·git·学习·macos·github·spine
薛定e的猫咪2 小时前
(arXiv 2026)GLiBRL :可学习基函数的深度贝叶斯元强化学习 ----待补充
人工智能·深度学习·学习·算法·机器学习