키워드 및 연산자
하드 키워드
다음 토큰은 항상 키워드로 해석되며 식별자로 사용할 수 없습니다:
asas?는 안전한 타입 캐스트에 사용됩니다.break는 루프의 실행을 종료합니다.class는 클래스를 선언합니다.continue는 가장 가까운 바깥쪽 루프의 다음 단계로 진행합니다.do는 do/while 루프(후위 조건 루프)를 시작합니다.else는 조건이 false일 때 실행되는 if 표현식의 분기를 정의합니다.false는 Boolean 타입의 'false' 값을 지정합니다.for는 for 루프를 시작합니다.fun은 함수를 선언합니다.if는 if 표현식을 시작합니다.in- for 루프에서 반복되는 객체를 지정합니다.
- 값이 범위, 컬렉션 또는 'contains' 메서드를 정의하는 다른 엔티티에 속하는지 확인하는 중위 연산자로 사용됩니다.
- 동일한 목적으로 when 표현식에 사용됩니다.
- 타입 매개변수를 반공변으로 표시합니다.
!in- 값이 범위, 컬렉션 또는 'contains' 메서드를 정의하는 다른 엔티티에 속하지 않는지 확인하는 연산자로 사용됩니다.
- 동일한 목적으로 when 표현식에 사용됩니다.
interface는 인터페이스를 선언합니다.is- 값이 특정 타입을 가졌는지 확인합니다.
- 동일한 목적으로 when 표현식에 사용됩니다.
!is- 값이 특정 타입을 가지지 않았는지 확인합니다.
- 동일한 목적으로 when 표현식에 사용됩니다.
null은 어떤 객체도 가리키지 않는 객체 참조를 나타내는 상수입니다.object는 클래스와 해당 인스턴스를 동시에 선언합니다.package는 현재 파일의 패키지를 지정합니다.return은 가장 가까운 바깥쪽 함수 또는 익명 함수에서 반환합니다.superthis- 현재 리시버를 참조합니다.
- 보조 생성자에서 동일 클래스의 다른 생성자를 호출합니다.
throw는 예외를 발생시킵니다.true는 Boolean 타입의 'true' 값을 지정합니다.try는 예외 처리 블록을 시작합니다.typealias는 타입 별칭을 선언합니다.typeof는 향후 사용을 위해 예약되어 있습니다.val은 읽기 전용 프로퍼티 또는 지역 변수를 선언합니다.var은 가변 프로퍼티 또는 지역 변수를 선언합니다.when은 when 표현식(지정된 분기 중 하나를 실행)을 시작합니다.while은 while 루프(전위 조건 루프)를 시작합니다.
소프트 키워드
다음 토큰은 적용 가능한 컨텍스트에서 키워드로 작동하며, 다른 컨텍스트에서는 식별자로 사용할 수 있습니다:
bycatch는 특정 예외 타입을 처리하는 블록을 시작합니다.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은 생성자 외부에서 non-nullable 프로퍼티를 초기화할 수 있습니다.noinline은 인라인 함수에 전달된 람다의 인라인을 끕니다.open은 클래스를 서브클래싱하거나 멤버를 재정의할 수 있습니다.operator는 함수가 연산자를 오버로드하거나 규칙을 구현함을 표시합니다.out은 타입 매개변수를 공변으로 표시합니다.override는 멤버가 슈퍼클래스 멤버의 재정의임을 표시합니다.private는 선언이 현재 클래스 또는 파일에서 가시적임을 표시합니다.protected는 선언이 현재 클래스와 그 서브클래스에서 가시적임을 표시합니다.public은 선언이 어디서든 가시적임을 표시합니다.reified는 인라인 함수의 타입 매개변수가 런타임에 접근 가능함을 표시합니다.sealed는 봉인된 클래스(서브클래싱이 제한된 클래스)를 선언합니다.suspend는 함수 또는 람다를 코루틴으로 사용 가능한 중단 함수로 표시합니다.tailrec은 함수를 꼬리 재귀로 표시합니다(컴파일러가 재귀를 반복으로 대체할 수 있도록 함).vararg는 매개변수에 가변 개수의 인수를 전달할 수 있습니다.
특수 식별자
다음 식별자는 특정 컨텍스트에서 컴파일러에 의해 정의되며, 다른 컨텍스트에서는 일반 식별자로 사용할 수 있습니다:
field는 프로퍼티 접근자 내부에서 프로퍼티의 배킹 필드를 참조하는 데 사용됩니다.it은 람다 내부에서 매개변수를 암시적으로 참조하는 데 사용됩니다.
연산자 및 특수 기호
Kotlin은 다음 연산자 및 특수 기호를 지원합니다:
+,-,*,/,%- 수학 연산자*는 vararg 매개변수에 배열을 전달하는 데도 사용됩니다.
=- 할당 연산자.
- 매개변수의 기본값을 지정하는 데 사용됩니다.
+=,-=,*=,/=,%=- 증강 할당 연산자.++,--- 증가 및 감소 연산자.&&,||,!- 논리 'and', 'or', 'not' 연산자(비트 연산에는 해당 중위 함수를 대신 사용).==,!=- 동등 연산자(비원시 타입의 경우equals()호출로 변환됨).===,!==- 참조 동등 연산자.<,>,<=,>=- 비교 연산자(비원시 타입의 경우compareTo()호출로 변환됨).[,]- 인덱스 접근 연산자(get및set호출로 변환됨).!!는 표현식이 non-nullable임을 단언합니다.?.는 안전 호출을 수행합니다(리시버가 non-nullable이면 메서드를 호출하거나 프로퍼티에 접근).?:는 왼쪽 값이 null인 경우 오른쪽 값을 취합니다(엘비스 연산자).::는 멤버 참조 또는 클래스 참조를 생성합니다...,..<는 범위를 생성합니다.:는 선언에서 이름과 타입을 구분합니다.?는 타입을 nullable로 표시합니다.->@- 어노테이션을 도입합니다.
- 루프 레이블을 도입하거나 참조합니다.
- 람다 레이블을 도입하거나 참조합니다.
- 'this' 표현식을 바깥 스코프에서 참조합니다.
- 바깥쪽 슈퍼클래스를 참조합니다.
;는 같은 줄에 여러 문을 구분합니다.
