Ключевые слова и операторы
Жёсткие ключевые слова
Следующие токены всегда интерпретируются как ключевые слова и не могут использоваться в качестве идентификаторов:
-
asиспользуется для приведения типов.
указывает псевдоним для импорта
as?используется для безопасного приведения типов.breakзавершает выполнение цикла.classобъявляет класс.continueпереходит к следующему шагу ближайшего внешнего цикла.doначинает цикл do/while (цикл с постусловием).elseзадаёт ветвь выражения if, которая выполняется, если условие ложно.falseзадаёт значение «false» логического типа.forначинает цикл for.funобъявляет функцию.ifначинает выражение if.-
inуказывает объект, по которому выполняется итерация в цикле for.
используется как инфиксный оператор для проверки, принадлежит ли значение диапазону, коллекции или другой сущности, в которой определён метод 'contains'.
используется в выражениях when с той же целью.
обозначает контравариантный параметр типа.
-
!inиспользуется как оператор для проверки, что значение НЕ принадлежит диапазону, коллекции или другой сущности, в которой определён метод 'contains'.
используется в выражениях when с той же целью.
interfaceобъявляет интерфейс.-
isпроверяет, что значение имеет определённый тип.
используется в выражениях when с той же целью.
-
!isпроверяет, что значение НЕ имеет определённый тип.
используется в выражениях when с той же целью.
null— это константа, представляющая ссылку на объект, которая не указывает ни на один объект.objectобъявляет класс и его экземпляр одновременно.packageзадаёт пакет для текущего файла.returnвозвращает управление из ближайшей внешней функции или анонимной функции.-
super -
this throwвыбрасывает исключение.trueзадаёт значение «true» логического типа.typealiasобъявляет псевдоним типа.typeofзарезервировано для будущего использования.valобъявляет доступное только для чтения свойство или локальную переменную.varобъявляет изменяемое свойство или локальную переменную.whenначинает выражение when (выполняет одну из заданных ветвей).whileначинает цикл while (цикл с предусловием).
Мягкие ключевые слова
Следующие токены выступают в качестве ключевых слов в подходящем для них контексте и могут использоваться как идентификаторы в других контекстах:
-
by catchначинает блок, который обрабатывает исключение определённого типа.constructorобъявляет первичный или вторичный конструктор.delegateиспользуется как цель применения аннотации.dynamicобозначает динамический тип в коде Kotlin/JS.-
fieldобъявляет явное поле хранения.
используется как цель применения аннотации.
fileиспользуется как цель применения аннотации.finallyначинает блок, который выполняется всегда при выходе из блока try.-
getобъявляет геттер свойства.
используется как цель применения аннотации.
importимпортирует объявление из другого пакета в текущий файл.initначинает блок инициализации.paramиспользуется как цель применения аннотации.propertyиспользуется как цель применения аннотации.receiverиспользуется как цель применения аннотации.-
setобъявляет сеттер свойства.
используется как цель применения аннотации.
setparamиспользуется как цель применения аннотации.valueвместе с ключевым словомclassобъявляет встраиваемый класс.whereзадаёт ограничения для параметра обобщённого типа.
Ключевые слова-модификаторы
Следующие токены выступают в качестве ключевых слов в списках модификаторов объявлений и могут использоваться как идентификаторы в других контекстах:
abstractпомечает класс или его член как абстрактный.actualобозначает реализацию, специфичную для платформы, в мультплатформенных проектах.annotationобъявляет класс аннотации.companionобъявляет объект-компаньон.constпомечает свойство как константу времени компиляции.crossinlineзапрещает нелокальные возвраты из лямбды, переданной встроенной функции.dataуказывает компилятору сгенерировать канонические члены класса.enumобъявляет перечисление.expectпомечает объявление как специфичное для платформы, ожидая реализации в модулях платформ.externalпомечает объявление как реализованное вне Kotlin (доступное через JNI или в JavaScript).finalзапрещает переопределение члена.infixпозволяет вызывать функцию, используя инфиксную нотацию.inlineуказывает компилятору встраивать функцию и переданные ей лямбды в месте вызова.innerпозволяет обращаться к экземпляру внешнего класса из вложенного класса.internalпомечает объявление как видимое в текущем модуле.lateinitпозволяет инициализировать свойство, допускающее значение null, вне конструктора.noinlineотключает встраивание лямбды, переданной встроенной функции.openразрешает наследование от класса или переопределение члена.operatorпомечает функцию как перегружающую оператор или реализующую соглашение.outпомечает параметр типа как ковариантный.overrideпомечает член как переопределение члена суперкласса.privateпомечает объявление как видимое в текущем классе или файле.protectedпомечает объявление как видимое в текущем классе и его подклассах.publicпомечает объявление как видимое отовсюду.reifiedпомечает параметр типа встроенной функции как доступный во время выполнения.sealedобъявляет закрытый класс (класс с ограниченным наследованием).suspendпомечает функцию или лямбду как приостанавливаемую (пригодную для использования в корутине).tailrecпомечает функцию как хвосторекурсивную (что позволяет компилятору заменить рекурсию итерацией).varargразрешает передавать параметру переменное число аргументов.
Специальные идентификаторы
Следующие идентификаторы определяются компилятором в определённых контекстах и могут использоваться как обычные идентификаторы в других контекстах:
fieldиспользуется внутри метода доступа к свойству для обращения к полю хранения свойства.itиспользуется внутри лямбды для неявного обращения к её параметру.
Операторы и специальные символы
В Kotlin поддерживаются следующие операторы и специальные символы:
-
+,-,*,/,%— математические операторы*также используется для передачи массива параметру vararg.
-
=оператор присваивания.
используется для задания значений параметров по умолчанию.
+=,-=,*=,/=,%=— операторы составного присваивания.++,--— операторы инкремента и декремента.&&,||,!— логические операторы «и», «или», «не» (для побитовых операций вместо них используйте соответствующие инфиксные функции).==,!=— операторы равенства (для непримитивных типов преобразуются в вызовыequals()).===,!==— операторы ссылочного равенства.<,>,<=,>=— операторы сравнения (для непримитивных типов преобразуются в вызовыcompareTo()).[,]— оператор индексированного доступа (преобразуется в вызовыgetиset).?.выполняет безопасный вызов (вызывает метод или обращается к свойству, если получатель не допускает значения null).?:возвращает значение справа, если значение слева равно null (это оператор Элвиса).::создаёт ссылку на член или ссылку на класс.-
.обращается к членам, включая вложенные классы и элементы перечисления.
объявляет и вызывает расширения.
уточняет имена и пакеты.
отделяет целую часть от дробной в литерале с плавающей точкой.
..,..<создают диапазоны.:отделяет имя от типа в объявлении.?помечает тип как допускающий значение null.-
->отделяет параметры от тела лямбда-выражения.
отделяет параметры от объявления возвращаемого типа в функциональном типе.
отделяет условие от тела ветви выражения when.
-
@вводит аннотацию.
вводит или обозначает метку цикла.
вводит или обозначает метку лямбды.
обозначает выражение 'this' из внешней области видимости.
обозначает внешний суперкласс.
;разделяет несколько инструкций в одной строке.$обозначает переменную или выражение в шаблоне строки.-
_заменяет неиспользуемый параметр в лямбда-выражении.
заменяет неиспользуемый параметр в объявлении с деструктуризацией.
Сведения о приоритете операторов см. в этом справочнике по грамматике Kotlin.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/keyword-reference.html