본문 바로가기

Language/Kotlin

코틀린의 특징

반응형

코틀린은 기존의 자바와는 비슷하면서도 다음과 같은 코틀린의 특징을 가지고 있다. 

 

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, "한글입니다.")
}

 

반응형