본문 바로가기

Backend/Kotlin

Java to Kotlin 비교 및 정리

Lec 01. 코틀린에서 변수를 다루는 방법

- 모든 변수는 var / val 을 붙인다. var = 변경 가능, val = 변경 불가능 (read-only)

- 프린트할 때 기본으로 println을 사용한다.

- 타입을 명시적으로 작성하지 않아도, 타입이 추론된다.

- Primitive Type과 Reference Type을 구분하지 않아도 된다. => 프로그래머가 boxing / unboxing을 고려하지 않아도 되도록 Kotlin이 알아서 처리 해준다.

- Null 이 들어갈 수 있는 변수는 타입 뒤에 ? 를 붙여주어야 한다. => 아예 다른 타입으로 간주된다.

- 객체를 인스턴스화 할 때 new를 붙이지 않아야 한다.


Lec 02. 코틀린에서 null을 다루는 방법

Null-Safety

코틀린에서는 인자에 null이 허용됨을 명시해주지 않으면 함수 내에서 null 일 수도 있는 인자를 사용할 수 없다.

=> Kotlin에서는 null이 가능한 타입을 완전히 다르게 취급한다.

 

null이 가능한 타입을 완전히 다르게 취급하기 때문에, null을 위한 기능들도 존재한다.

 

- Safe Call

null 이 아니면 실행하고, null 이면 실행하지 않는다. (그대로 null)

 

- Elvis 연산자

앞의 연산 결과가 null 이면 뒤의 값을 사용한다.

 

- null 아님 단언!!

nullable type이지만, 아무리 생각해도 null이 될 수 없는 경우 널 아님 단언 !! 을 사용해주면 기능을 사용할 수 있다.

혹시나 null이 들어오면 NPE가 나오기 때문에 정말 null이 아닌게 확실한 경우에만 !! 을 사용해야 한다.

 

참고로 Kotlin에서 Java 코드를 사용할 때 코틀린이 null 관련 정보를 알 수 없는 타입을 조심해야 한다. 런타임 시 Exception이 날 수 있다.


Lec 03. 코틀린에서 Type을 다루는 방법

코틀린에서는 선언된 기본값을 보고 타입을 자동으로 추론한다.

 

- .to변환타입()

하지만 기본 타입간의 변환은 명시적으로 !!! 이루어져야 한다. => .to변환타입() 을 사용한다.

 

Kotlin의 타입 캐스팅

- value instanceOf Type : 변수가 주어진 타입이면 true, 그렇지 않으면 false

- value is Type : value가 Type이면 True, value가 Type이 아니면 false

- value as Type : value가 Type이면 Type으로 타입 캐스팅, Type이 아니면 예외 발생

- value as? Type : value가 Type이면 Type으로 타입 캐스팅, value가 null 이면 null, value가 Type이 아니면 null

 

Kotlin의 특이한 타입 3가지

1. Any

- Java의 Object 역할을 한다. (모든 객체의 최상위 타입이다.)

- 모든 Primitive Type의 최상위 타입도 Any이다.

- Any 자체로 null을 포함할 수는 없어서, null을 포함하고 싶다면 Any?로 표현한다.

- Java에서의 Object와 마찬가지로 Any에 equals / hashCode / toString이 존재한다.

 

2. Unit

- Java의 void와 동일한 역할을 한다.

- void와 다른점은 Unit은 그 자체로 타입 인자로 사용 가능하다는 점이다.

- 즉, 코틀린의 Unit은 실제 존재하는 타입이다.

 

3. Nothing

- 함수가 정상적으로 끝나지 않았다는 사실을 표현하는 역할을 한다.

무조건 예외를 반환하는 함수 / 무한 루프 함수 등

 

String interpolation / String indexing

 

- 코틀린에서는 문자열에 변수를 쉽게 넣을 수 있다.

${변수}를 사용하면 값이 들어간다. $변수를 사용할 수도 있다.

 

- 코틀린에서 문자열의 특정 문자를 인덱싱해서 가져올 수 있다.

문자열에서 문자를 가져올 때 Java 의 배열처럼 []를 사용한다.


Lec 04. 코틀린에서 연산자를 다루는 방법

133p~ 부터