Backend/Java

Kotlin "코틀린 완벽 가이드" 스터디 1주차

가은파파 2024. 1. 21. 13:08

 

기본 문법

  • 자바에서는 원시타입을 감싸는 특별한 박싱 타입이 있지만, 코틀린은 필요할 때 암시적으로 박싱을 수행한다.
//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>를 사용하는 배열은 제대로 작동하지만 모든 수를 박싱하기 때문에 그다지 실용적이지 못한 해법이다.

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 클래스