- "코틀린 완벽 가이드" 책을 기준으로 공부한 내용을 정리합니다.
- 기본적인 내용보다 새로 알게된 사실 위주로 정리합니다.
- 추가적으로 https://kotlinlang.org/docs/getting-started.html 공식 사이트도 같이 정리하려고 합니다.
기본 문법
- 자바에서는 원시타입을 감싸는 특별한 박싱 타입이 있지만, 코틀린은 필요할 때 암시적으로 박싱을 수행한다.
//java
int primitiveInt = 10;
Integer boxedInt = Integer.valueOf(primitiveInt); // Boxing
// 사실 Integer boxedInt = 10 도 가능
int unboxedInt = boxedInt.intValue(); // Unboxing
//kotlin
val primitiveInt = 10 // 코틀린에서는 자동으로 Int로 처리, 박싱이 필요없음
타입
- 타입추론
- 부동소수점 리터럴의 타입은 Double이다.
- Array<Int>를 사용하는 배열은 제대로 작동하지만 모든 수를 박싱하기 때문에 그다지 실용적이지 못한 해법이다.
- 이런 이유로 코틀린은 더 효율적인 ByteArray, ShortArray, IntArray, LongArray…라는 특화된 배열 타입을 제공한다. (JVM에서 이런 배열 타입들은 int[], boolean[] 등의 원시 타입 배열로 표현된다.)
- https://kotlinlang.org/docs/arrays.html#primitive-type-arrays
Null safety
var a: String = "abc" // Regular initialization means non-nullable by default
a = null // compilation error
var b: String? = "abc" // can be set to null
b = null // ok
print(b)
val l = b.length // error: variable 'b' can be null
//first
val b: String? = "Kotlin"
if (b != null && b.length > 0) {
print("String of length ${b.length}")
} else {
print("Empty string")
}
//second
val a = "Kotlin"
val b: String? = null
println(b?.length)
println(a?.length) // Unnecessary safe call
//third (anti-pattern)
val l = b!!.length
- Unit = JAVA void 함수와 동일 (반환 없는 경우)
- Void = 자바의 Void 클래스
'Backend > Java' 카테고리의 다른 글
[Java] Stack, Deque, LinkedList (0) | 2022.03.12 |
---|---|
[Java] 자바 직렬화 / Serializable / 문제점 / 해결책 (0) | 2022.02.23 |
[Java] HashTable / HashMap / 연결리스트의 중간노드 찾기 / LRU 캐시 (0) | 2022.02.22 |
[Java] 재귀함수 / 일반재귀 vs 꼬리재귀 / 언어별 꼬리 재귀 최적화 / 연결리스트 꼬리재귀 코드 (0) | 2022.02.20 |
[Java] 싱글스레드 / 멀티스레드 / 스레드의 IO 블록킹 /스레드 우선순위 / 스레드 그룹 / 데몬 스레드 (0) | 2022.02.14 |