우봉수
2023. 2. 27. 11:24
2023. 2. 27. 11:24
체크드 익셉션
- 자바에서는 체크드 익셉션을 try catch, throw를 통해 해결하지 않으면 컴파일 에러가 발생
- 코틀린은 체크드 익셉션을 강제하지 않는다. (생략가능)
기본 자료형
- 자바는 원시 자료형을 지원하며 객체로된 레퍼런스 타입도 지원한다
- 코틀린은 레퍼런스 타입만 지원한다
- 코틀린의 레퍼런스 타입은 최적화된 방식으로 자바로 컴파일된다.
정적 맴버
- 자바는 static 키워드로 정적 맴버를 선언한다.
- 코틀린은 companion object로 대체
삼항 연산자
- 자바는 삼항 연산자가 존재한다.
- 코틀린은 if-else로 대신한다 (if else 문이 값을 반환하는 것이 가능)
세미콜론(;)
- 자바에서 라인의 끝은 무조건 세미콜론으로 끝나야한다.
- kotlin은 세미클론을 생략 가능하다.
확장
- 코틀린은 개발자가 임의로 객체의 함수나 프로퍼티를 확장해서 사용할 수 있다.
데이터 클래스
- 데이터를 보관하거나 전달하는 목적을 가진 불변 객체로 사용
- 기존 자바에선 주로 Lombok을 사용 (@Data)
- JDK 15에서 record 라는 이름으로 추가됨
문자열 템플릿
- 문자열에 변수를 사용하거나 여러 행으로 된 텍스트 블록을 만들 수 있다
- 자바에서는 해당 기능이 프리뷰 상태
NULL 안정성
- 자바에서 가장 많이 발생하는 예외는 NullPointerException
- 자바의 옵셔널(Optional)은 값을 래핑하기 때문에 객체 생성에 따른 오버헤드가 발생하고, 컴파일 단계에서 Null 가능성을 검사하지 않음
- Kotlin은 언어적 차원에서 NullPointException이 발생할 가능성을 제거한다.
- Nullable 참조는 컴파일 단계에서 NULL 안정성을 제공
- 변수~? 해당 변수가 null이 아니라면 실행
- 변수~!! 해당 변수가 null이 아니라고 확신하는 경우
기타
- 스마트 캐스트
- 실드 클래스
- 위임
- 중위 표현식
- 연산자 오버로딩
- 코루틴
- etc