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")
    }
相关推荐
岁月宁静24 分钟前
🎨 打造 AI 应用的 “门面”:Vue3.5 + MarkdownIt 实现高颜值、高性能的答案美化组件
前端·javascript·vue.js
Miki Makimura1 小时前
基于网络io的多线程TCP服务器
网络·c++·学习
丰锋ff1 小时前
2014 年真题配套词汇单词笔记(考研真相)
学习·考研
RaLi和夕1 小时前
嵌入式学习笔记4.STM32中断系统及外部中断EXTI
笔记·stm32·单片机·学习
2401_831501732 小时前
Python学习之day01学习(变量定义和数据类型使用)
开发语言·python·学习
liaojuajun2 小时前
可视化地图
开发语言·javascript·ecmascript
straw_hat.2 小时前
PCB学习——STM32F103VET6-STM32主控部分
stm32·嵌入式硬件·学习
小高0073 小时前
前端如何优雅地生成唯一标识?——一份跨环境 UUID 工具函数的封装与实战
前端·javascript·vue.js
我是日安3 小时前
从零到一打造 Vue3 响应式系统 Day 24 - Watch:Options
前端·javascript·vue.js
蒙奇D索大3 小时前
【数据结构】数据结构秘籍:如何衡量“查找”的快慢?ASL是关键!
数据结构·笔记·学习·考研