在 Kotlin 中初始化数组:5 种方法及代码示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Kotlin 中的数组:别怕,其实很简单

\n\n

如果你从 Java 转到 Kotlin,或者刚开始学习这门现代语言,“如何在 Kotlin 中初始化带值的数组”这个问题几乎会立刻出现。在 Stack Overflow 上,这个话题已经积累了数千次浏览——说明它确实很重要。

\n\n

好消息是:Kotlin 让数组操作比 Java 方便得多。坏消息是:有几种方法,新手常常会混淆。让我们一次性彻底搞懂所有Kotlin 数组初始化的方式——从简单到复杂,并附上真实的代码示例。

\n\n

1. 最简单的方法:arrayOf()

\n\n

arrayOf() 函数是你的基本工具。它根据传入的值创建数组,并自动确定类型。

\n\n
// 整数数组\nval numbers = arrayOf(1, 2, 3, 4, 5)\n\n// 字符串数组\nval fruits = arrayOf("苹果", "香蕉", "橙子")\n\n// 混合类型数组 (Any)\nval mixed = arrayOf(42, "Kotlin", true)\n\nprintln(numbers.contentToString()) // [1, 2, 3, 4, 5]\nprintln(fruits.contentToString())   // [苹果, 香蕉, 橙子]\n
\n\n

重要提示:arrayOf() 创建的是 Array<T>——对象数组。如果你需要原始类型(int、char、boolean)以提高性能,请继续往下看。

\n\n

2. 原始类型数组:intArrayOf()、doubleArrayOf() 等

\n\n

Kotlin 为每种原始类型提供了专门的函数。它们节省内存且运行更快:

\n\n
// 整数\nval intArr = intArrayOf(10, 20, 30, 40, 50)\n\n// 浮点数\nval doubleArr = doubleArrayOf(1.5, 2.7, 3.14)\n\n// 布尔值\nval boolArr = booleanArrayOf(true, false, true)\n\n// 字符\nval charArr = charArrayOf('K', 'o', 't', 'l', 'i', 'n')\n\n// 字节\nval byteArr = byteArrayOf(0x48, 0x65, 0x6C, 0x6C, 0x6F) // "Hello"\n\nprintln(intArr.joinToString()) // 10, 20, 30, 40, 50\n
\n\n

完整列表:intArrayOf、doubleArrayOf、floatArrayOf、longArrayOf、shortArrayOf、byteArrayOf、booleanArrayOf、charArrayOf。

\n\n

何时使用?如果处理大量数据或编写高性能代码——请使用原始类型数组。对于常规任务,arrayOf() 完全够用。

\n\n

3. 数组构造函数:带 lambda 的 Array(size)

\n\n

最灵活的Kotlin 数组初始化方式——使用带 lambda 表达式的构造函数。你指定大小和填充规则:

\n\n
// 0 到 4 的平方数\nval squares = Array(5) { i -> i * i }\nprintln(squares.contentToString()) // [0, 1, 4, 9, 16]\n\n// 10 个随机数的数组\nimport kotlin.random.Random\nval randoms = Array(10) { Random.nextInt(100) }\nprintln(randoms.contentToString()) // [42, 17, 83, 5, 91, ...]\n\n// 带模板的字符串数组\nval labels = Array(3) { index -> "元素 #${index + 1}" }\nprintln(labels.contentToString()) // [元素 #1, 元素 #2, 元素 #3]\n
\n\n

lambda 接收元素的索引(从 0 到 size-1),并必须返回一个值。这是一个强大的工具——你可以根据任何规则填充数组,包括调用函数。

\n\n

4. arrayOfNulls()——带空单元格的数组

\n\n

有时需要先创建数组,稍后再填充。这时可以使用 arrayOfNulls():

\n\n
// 包含 5 个 null 元素的数组\nval nullArray = arrayOfNulls<String>(5)\nprintln(nullArray.contentToString()) // [null, null, null, null, null]\n\n// 稍后填充\nnullArray[0] = "第一个"\nnullArray[2] = "第三个"\nprintln(nullArray.contentToString()) // [第一个, null, 第三个, null, null]\n
\n\n

需要显式指定类型——编译器

博客

书籍推荐