코틀린의 변수 초기화?

코틀린은 Java와 달리 변수를 선언할 때 기본값으로 자동 초기화하지 않습니다. boolean 변수가 자동으로 false로, int 변수가 자동으로 0으로 초기화되지 않죠.

변수를 선언할 때 명시적인 초기화를 요구하여 NullPointerException과 같은 오류를 방지하고 코드의 안정성을 높이기 때문이죠.

그래서 코틀린에서 변수를 선언할 때 반드시 명시적으로 초기화해야 합니다.

물론 lateinit이나 by lazy와 같은 기능을 통해 초기화 시점을 조절할 수 있습니다.

var myBoolean: Boolean // 컴파일 에러! 초기화가 필요함
var myInt: Int // 컴파일 에러! 초기화가 필요함

var myBoolean: Boolean = false // 명시적 초기화
var myInt: Int = 0 // 명시적 초기화

lateinit var myLateinitString: String // lateinit으로 선언, 나중에 초기화

val myLazyValue: String by lazy {
 // 처음 사용될 때 초기화됨
 "Hello"
}

지연초기화

1. 변수 - lateinit

fun main(){
    var s1 = Student()
    s1.name = "참새"
    s1.displayInfo()

    s1.age = 10
    s1.displayInfo()
}

class Student {
    lateinit var name:String
    var age:Int = 0

    fun displayInfo() {
        println("이름은: ${name} 입니다.")
        println("나이는: ${age} 입니다.")
    }
}

isInitialized