0 vs Null
- 0 : 휴지를 다 쓰고 휴지심만 남은 상태
- null : 휴지심도 없는 상태, 존재하지 않는 상태, 모르는 상태
Null이 안전하지 않은 이유
- 만약 null인 값으로 연산을 하려고 하거나, Null인 객체로 접근하려고 하는 경우에 NPE(Null Point Exception) Error가 발생할 수 있기 때문이다.
// ? 앞에 있는 변수가 null이 아니라면 setOnClickListener를 실행하겠다.
button?.setOnClickListener{
}
var num1:Int = 10
var num2:Int? = null
var num3:Int? = 5
//var num4: = num1 + num2
var num4 = num2?.plus(num1) // num4는 null
var num4 = num3?.plus(num1) // num4는 15
-> ? 앞에 있는 변수가 null이라면, ? 뒤에 있는 코드는 무시
// button은 확실히 Null이 아니다.
button!!.setOnClickListener{
}
var num1: Int? = 5
// 개발자가 num1이 null이 아님을 보장한다.
var num2: Int = num1!! + 10
// num1에 num2가 null이면 5를 대입하고, 아니면 num2에 있는 값 대입
var num1 = num2 ?: 5
class Car(var number: Int){
}
lateinit var lateCar: Car
...
lateCar = Car(10)