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


原始标题:Convert a Character Array to a String in Kotlin