Spec-Zone.ru › Kotlin 2

Символы

Тип Char представляет один символ в виде 16-битной кодовой единицы UTF-16.

Используйте Char для отдельных символов, например букв, цифр, знаков препинания или пробелов. Для последовательностей символов используйте String.

Char — не числовой тип, но у каждого символа есть числовое значение Unicode, к которому можно получить доступ. См. раздел Преобразование символов.

Синтаксис

Чтобы объявить символ, заключите его значение в одинарные кавычки (' '). Можно явно указать тип Char или позволить Kotlin вывести его из значения:

val letter: Char = 'a'

// Kotlin infers Char because the values are written in single quotes
val digit = '1'
val symbol = '!'
val space = ' '
val separator = ':'

Литерал символа должен содержать ровно один символ. В противном случае компилятор Kotlin сообщит об ошибке:

val invalid = 'AB' // Error
val invalidEmpty = '' // Error

Допускающие значение null значения

Чтобы хранить значение, допускающее null, используйте Char?:

val maybeAbsent: Char? = null

На JVM значения Char, допускающие null, при необходимости упаковываются. То же относится к числовым типам.

Поддержка Unicode

В Kotlin значения Char представлены 16-битными кодовыми единицами UTF-16. Это означает, что один Char хранит одну кодовую единицу UTF-16, которая не обязательно соответствует одному полному символу Unicode.

Основная многоязычная плоскость

Один Char может хранить значения в диапазоне от \u0000 до \uFFFF. Этот диапазон охватывает основную многоязычную плоскость (BMP), в которую входят символы почти всех современных языков и множество знаков.

Чтобы указать символ с помощью значения Unicode, используйте \u, за которым следует четырёхзначное шестнадцатеричное значение из таблицы Unicode:

val unicodeNumber = '\u0031' // Equals '1'

Дополнительные символы

Символы Unicode за пределами BMP, например эмодзи и некоторые символы исторических письменностей, нельзя представить одним Char. В UTF-16 они кодируются как суррогатная пара, в которой два значения Char вместе представляют один символ Unicode в String:

fun main() {
//sampleStart
    val emoji = "🥦"
    
    println(emoji.length) // 2
    println(emoji[0])     // First surrogate
    println(emoji[1])     // Second surrogate
//sampleEnd
}

Для работы с 32-битными символами по отдельности используйте кодовые точки Unicode, хранящиеся как значения Int.

Управляющие последовательности

Используйте управляющие последовательности для специальных символов, которые сложно вводить непосредственно в исходном коде или которые имеют особое значение.

Каждая управляющая последовательность начинается с обратной косой черты (\).

Поддерживаемая последовательность

Описание

\t

Табуляция

\b

Удаление предыдущего символа

\n

Перевод строки (LF)

\r

Возврат каретки (CR)

\'

Одинарная кавычка

\"

Двойная кавычка

\\

Обратная косая черта

\$

Знак доллара

Например:

val newLine = '\n'
val dollar = '\$'
val backslash = '\\'

Операции

Char поддерживает сравнение, проверку, изменение регистра и явное преобразование в числовой тип.

Сравнение символов

Для сравнения значений Char используйте стандартные операторы сравнения, например ==, !=, <, >, <= и >=.

Kotlin сравнивает значения Char по их числовым значениям Unicode и возвращает значение Boolean:

val before = 'a' < 'b' // true
val after = 'c' > 'd' // false
val different = 'A' == 'a' // false 
val equal = 'A' == 'A' // true

Обработка символов

В Kotlin есть функции для проверки символов и изменения их регистра. Например:

fun main() {
//sampleStart
    val myChar = 'A'
    // Checks if the character represents a digit
    println(myChar.isDigit()) // false
    // Checks if the character represents an uppercase letter
    println(myChar.isUpperCase()) // true
    // Returns a lowercase version
    println(myChar.lowercaseChar()) // 'a'
//sampleEnd
}

Подробнее о доступных функциях см. в справочнике API.

Арифметические операции с символами

Можно создать другое значение символа, прибавив или вычтя целое число:

fun main() {
//sampleStart
    val a = 'a'

    println(a + 1)  // b
    println(a + 2)  // c
    println(a - 32) // A
//sampleEnd
}

Эти операции учитывают значения Unicode, а не правила алфавита конкретного языка.

Также можно использовать операторы инкремента (++) и декремента (--) в префиксной и постфиксной формах с изменяемыми переменными:

fun main() {
//sampleStart
    var a = 'A'
    
    a += 10
    println(a)   // 'K'
    
    println(++a) // 'L'  prefix increment
    println(a++) // 'L'  postfix increment
    println(a)   // 'M'
    
    println(--a) // 'L'  prefix decrement
    println(a--) // 'L'  postfix decrement
    println(a)   // 'K'
//sampleEnd
}

Преобразование символов

Для преобразования Char в числовой тип используйте явное преобразование:

  • Используйте .code, чтобы получить числовое значение Unicode символа:

    fun main() { 
    //sampleStart
        val letter = 'A'
        println(letter.code) // 65
    //sampleEnd
    }
    
  • Если символ представляет десятичную цифру, используйте digitToInt():

    fun main() { 
    //sampleStart
        val digit = '7'
        println(digit.digitToInt()) // 7
    //sampleEnd
    }
    

    Если символ может не быть допустимой цифрой, используйте digitToIntOrNull().

04 мая 2026 г.
Логические значенияСтроки

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/characters.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API