- 자바 개발자를 위한 코틀린 입문 강의 Java 코드 입니다!
- 자바 코드를 똑같이 타이핑 하는 시간 역시 아껴드릴 수 있도록 준비해보았습니다.
- 감사합니다!!! :)
- 모든 변수는 var / val을 붙여 주어야 한다.
- var: 변경 가능하다 / val: 변경 불가능하다(read-only)
- 타입을 명시적으로 작성하지 않아도, 타입이 추론된다.
- Primitive Type과 Reference Type을 구분하지 않아도 된다.
- Null이 듫어갈 수 있는 변수는 타입 뒤에
?
를 붙여주어야 한다.- 아예 다른 타입으로 간주됨
- 객체를 인스턴스화 할 때, new를 붙이지 않아야 한다.
- 코틀린에서 null이 들어갈 수 있는 타입은 완전히 다르게 간주된다.
- 한 번 null 검사를 하면 non-null임을 컴파일러가 알 수 있다.
- null이 아닌 경우에만 호출되는 Safe Call
?.
이 있다. - null인 경우에만 호출되면 Elvis 연산자
?:
가 있다. (else 같은 느낌) - null이 절대 아닐때 사용할 수 있는 Null 아님 단언
!!
이 있다. - Kotlin에서 Java 코드를 사용할 때 플랫폼 타입 사용에 유의해야 한다.
- Java 코드를 읽으며 null 가능성 확인 / Kotlin으로 wrapping
- 코틀린의 변수는 초기값을 보고 타입을 추론하며, 기본 타입들 간의 변환은 명시적으로 이루어진다.
- 코틀린에서는
is
,!is
,as
,as?
를 이용해 타입을 확인하고 캐스팅한다. - 코틀린의 Any는 Java의 Object와 같은 최상위 타입이다.
- 코틀린의 Unit은 Java의 void와 동일하다.
- 코틀린에 있는 Nothing은 정상적으로 끝나지 않는 함수릐 반환을 의미한다.
- 문자열을 가공할 때
${변수}
와""" """
를 사용하면 깔끔한 코딩이 가능하다. - 문자열에서 문자를 가져올 때, Java의 배열처럼
[]
를 사용한다.
-
Any
- Java의 Object 역할 (모든 객체의 최상위 타입)
- 모든 Primitive Type의 최상위 타입도 Any이다.
- Any 자체로는 null을 포함할 수 없음 -> 포함하고 싶다면
Any?
로 표현 - Any에 equals / hashCode / toString 존재
-
Unit
- Java의 void와 동일한 역할
- void와 다르게 Unit은 그 자체로 타입 인자로 사용 가능하다.
- 함수형 프로그래밍에서 Unit은 단 하나의 인스턴스만 갖는 타입을 의미
- 즉, Kotlin의 Unit은 실제 존재하는 타입이라는 것을 표현
-
Noting
- 함수가 정상적으로 끝나지 않았다는 사실을 표현하는 역할
- 무조건 예외를 반환하는 함수 / 무한 루프 함수 등
- 단항연산자, 산술연산자, 산술대입연산자 -> Java와 똑같음
- 비교연산자 사용법도 이하동문
- 단, 객체끼리도 자동 호출되는 compareTo를 이용해 비교 연산자를 사용할 수 있다.
- in, !in / a..b / a[i] / a[i] = b 와 같이 코틀린에서 새로 생긴 연산자도 있다.
- 객체끼리의 연산자를 직접 정의할 수 있다.