0. Kotlin의 특징
간결성
1 | // @Data 어노테이션(Lombok)을 사용하지않고도 data class를 통해 같은 기능을 한다. |
- Kotlin은 코드의 간결함과 개발자가 이해하기쉬운 코드를 작성하는 것을 추구한다.
안정성
1 |
|
NullPointerException
에 발생할 여지가 있다면 컴파일이 불가.- 타입체크와 캐스팅이 동시에 일어나게하는
is
라는 키워드로ClassCastException
를 좀더 쉽게 막을 수 있다. - Java와 같은 정적언어이지만 강력한 타입추론을 통해 타입을 명시하지않아도된다.(val)
상호운용
- Java를 대체하기위해 나온 언어이며, JVM 위에서 구동하기 때문에 JVM 기존 라이브러리 모두 호환
- Java -> Kotlin으로 변환가능.
(갓텔리제이)
1.함수
1 | fun main(args: Array<String>) { |
fun
이라는 키워드로 함수를 작성한다.args: Array<String>
처럼 타입이 뒤에 들어간다. 제네릭은 Java와 동일.- Java와 달리 System.out.println -> println으로 축약된 Wrapper를 제공한다. (Java의 표준라이브러리를 더욱 간결하게 사용하기 위함인듯..)
1 | fun max(a: Int, b: Int): Int { |
- Kotlin에서
if ~ else
문은 expression이므로 다음과 같이 변형가능하며 타입 추론으로 return 타입을 명시하지 않을 수 있다.
2.변수
1 | // immutable(final) |
val
,var
가 존재하며val
은 불변타입변수이며final
과 같고,var
는 가변타입변수이다.- 초기화시 값을 할당하지않으려면 반드시 타입을 명시해야하며, 변수도 타입추론이 가능하다.
1 | // 문자열 템플릿 |
$
를 사용해서 print가 용이하다.- 단순 변수가 아닌 함수호출이 필요하다면
${}
을 통해 사용가능하다.
3. 클래스
1 | class Car { |
- 클래스 내부의 변수선언을 자바에서는 필드선언이라고 하지만 Kotlin에서는
Property 선언
을 의미한다. - 접근제한자를 명시하지않으면 기본적으로
public
이다. private
,protected
,internal
,public
으로 나뉜다.internal
이 새로운 키워드인데 이것은 같은모듈에서 사용가능하게하는 접근제한자이다.