코틀린은 기존의 자바와는 비슷하면서도 다음과 같은 코틀린의 특징을 가지고 있다.
1. 간결한 문법
- 문장 끝에 세미클론을 넣지 않아도 된다.
- new 키워드를 쓰지 않고 객체를 생성한다.
- 타입 추론을 지원하므로 일반적인 경우 타입을 적지 않아도 된다.
2. null 안전성
- 객체 타입의 변수에서 null 값의 허용 여부를 구분하지 않던 자바와 달리 코틀린은 허용 여부를 구분한다.
3. 가변/불변 구분
- null값의 허용 여부를 구분하는 것과 유사하게 코틀린에서는 변수 및 변수 내 할당된 값의 불변 여부를 구분한다. 변수의 불변 여부, 즉 최초 생성 시 할당된 값을 이후에도 변경할 수 있는지의 여부를 변수 키워드인 var와 val로 구분한다.
- 값을 한 번 할당하고 나면 그 후에 변경할 수 없는 변수는 val를 사용하여 선언한다. 자바의 final과 유사하다.
- 할당된 값을 자유자재로 바꿀 수 있는 변수는 var로 선언한다. 자바에서 final 키워드 없이 선언하는 변수와 유사핟.
- 변수의 가변/불변과 유사하게 컬렉션 자료형에 대해서도 가변/불변 여부를 구분한다.
val immutable: List<String> listOf("a", "b", "c")
immutable.add("d") // 컴파일에러 일반 List는 add 함수가 정의되어 있지 않다.
val mutable : MutableList<String> = mutableListOf("a", "b", "c")
mutable.add("d") // 성공
4. 람다 표현식 지원
- 안드로이드에서는 개발 환경의 제약으로 람다 표현식을 사용하기 어려웠다. 코틀린에서는 람다 표현식을 기본으로 지원하므로 특별한 제약 없이 코드를 더 간소화할 수 있다.
- 자바로 작성된 인터페이스에 한해 SAM(Single Abstract Method) 변환을 지원하여 함수의 인자로 전달되는 인터페이스의 인스턴스를 람다식으로 표현할 수 있다.
5. when
- 코틀린에서는 자바의 switch문 대신에 코틀린에서는 when을 사용한다. 그동안 자바에서 switch문을 사용할 때 변수 타입이 엄격해서 상당히 제한적이던 것에 반해 코틀린의 when은 여러 가지 변수 타입이 들어갈 수 있다는 장점이 있다.
//자바에서 switch문
int nVersion = Config.VERSION;
Switch(nVersion)
{
case 0 :
Log.d(TAG, "0입니다.");
break;
case true : //오류!! 매개변수와 같은 타입이 들어가야함!!
Log.d(TAG, "true입니다.");
break;
}
//코틀린의 when
var nVersion = Config.VERSION
when(nVersion)
{
0->Log.d(TAG, "0입니다.")
true->Log.d(TAG, "true입니다.")
"한글"->Log.d(TAG, "한글입니다.")
}
'Language > Kotlin' 카테고리의 다른 글
코틀린 Data Class (0) | 2019.12.26 |
---|---|
코틀린 split 신기함 (0) | 2019.11.20 |
코틀린 리스트 (MutableList, List) (0) | 2019.11.20 |
코틀린 표준함수(apply, let, run, with, also, takeIf) (0) | 2019.11.20 |
코틀린 Null (안전 호출 연산자, non-null 단언 연산자) (0) | 2019.11.14 |