Причина, по которой toString()
работает таким образом, заключается в том, что во время выполнения массивы Kotlin представлены типами массивов JVM, поэтому, например, CharArray
равно char[]
во время выполнения.Эти типы JVM не предоставляют значимых реализаций методов toString
, equals
и hashCode
.
Вместо этого Kotlin предоставляет функции расширения contentToString
, contentEquals
и contentHashCode
для массивов.Эти функции реализованы так, как если бы массив был списком, например, contentToString
вернул бы [Р, о, м, к, а]
для массива из вопроса.
Однако, если вы хотите объединить все символы в массиве char встрока, вы должны использовать другую функцию: либо String(CharArray)
, доступную в Kotlin / JVM, либо экспериментальное расширение CharArray.concatToString()
, доступное для всех платформ, начиная с Kotlin 1.3.40.
Наконец, если ваша задача состоит в том, чтобы использовать заглавные буквыпервый символ, затем функция capitalize
сделает все эти манипуляции за вас, как @Francesc предложил в своем ответе .