1. 概述
本文介绍几种在 Kotlin 中将字符数组(CharArray
)转换为 String
的常用方法。
✅ 主流方式包括:
- 使用
String
构造函数 - 调用
joinToString()
扩展函数 - 借助
StringBuilder
进行拼接
每种方式都有适用场景,下面我们逐一分析,避免踩坑。
2. 使用 String 构造函数
最直接、性能最好的方式是使用 String
类提供的构造函数,它原生支持传入 CharArray
。
val charArray = charArrayOf('b', 'a', 'e', 'l')
val convertedString = String(charArray)
📌 关键点:
charArrayOf()
是 Kotlin 标准库中创建CharArray
的便捷函数String(charArray)
直接调用 JVM 层优化过的构造逻辑,底层是数组拷贝,效率高- 适用于大多数常规场景,推荐优先使用 ✅
⚠️ 注意:这里生成的是新的 String
实例,不会共享原数组内存。
3. 使用 joinToString() 方法
如果你处理的是 Array<Char>
而非 CharArray
,或者需要自定义分隔符、前缀/后缀,可以使用集合扩展函数 joinToString()
。
val charArray: Array<Char> = arrayOf('b', 'a', 'e', 'l')
val convertedString = charArray.joinToString("")
📌 说明:
arrayOf()
创建的是泛型Array<Char>
,和CharArray
不同(前者是引用类型数组,后者是基本类型char[]
)joinToString()
默认用逗号分隔元素,因此要传空字符串""
来避免额外字符- 底层会遍历数组并逐个拼接,性能略低于构造函数 ❌
💡 小技巧:如果想加连接符,比如转成 "b-a-e-l"
,可以直接写:
charArray.joinToString("-") // 输出: b-a-e-l
这在日志或格式化输出时很实用。
4. 使用 StringBuilder
当需要更灵活的拼接控制,或在循环中累积字符时,StringBuilder
是理想选择。
val charArray = charArrayOf('b', 'a', 'e', 'l')
val convertedString = StringBuilder().append(charArray).toString()
📌 特点:
StringBuilder.append(CharArray)
是 Kotlin 对 Java API 的良好封装- 支持链式调用,例如可继续追加其他内容:
StringBuilder()
.append(charArray)
.append("!")
.toString() // 结果: bael!
- 在复杂拼接场景下比
joinToString
更高效 ✅ - 单次简单转换时不建议使用,显得冗余 ❌
5. 总结与建议
方法 | 是否推荐 | 适用场景 |
---|---|---|
String(CharArray) |
✅ 强烈推荐 | 简单、高效地转换 CharArray |
joinToString("") |
⚠️ 有条件使用 | 处理 Array<Char> 或需添加分隔符 |
StringBuilder.append() |
✅ 推荐 | 需要后续拼接或其他动态构建逻辑 |
📌 最佳实践建议:
- 日常开发首选
String(CharArray)
,简洁且性能最优 - 若与其他集合操作链式调用,可统一用
joinToString
- 大量字符串拼接场景务必用
StringBuilder
,避免内存浪费
所有示例代码均可在 GitHub 获取:https://github.com/Baeldung/kotlin-tutorials/tree/master/core-kotlin-modules/core-kotlin-strings-2