1. 널 입력 가능 변수: 유형?
2. 보안통화 : ?.
3. 0이 아닌 주장: !!
1. null로 초기화되지 않은 변수는 선언할 수 없습니다.
//var varNull
//varNull = null
//오류발생 Kotlin: This variable must either have a type annotation or be initialized
2. 제로 에러가 발생한 경우
//var str1: String = "hello Kotlin"
//str1 = null //컴파일시 오류발생
//Kotlin: Null can not be a value of a non-null type String
//println("str1 = $str1") //자바경우는 런타임 오류발생
3. null 확인 중 오류 발생: nullable 변수의 유형? 오전.
//var str1: String? = "hello Kotlin"
//str1 = null
//println("str1 = $str1")
//println("str1.length = ${str1.length}") //컴파일오류 발생
//Kotlin: Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
4. Safecall(?.) nullable 변수.
보안 통화?. : 0이 아니면 ?. 다음을 실행합니다. 0이면 ? 실행하지 않습니다.
엘비스 오퍼레이터? : null인 경우 기본값을 설정합니다.
//var str1: String? = "Hello Kotlin"
//println("str1 : $str1 length : ${str1?.length ?: 0}")
5. 0이 아닌 주장!!
나는 그것이 null이 아니라고 확신하고 값을 참조할 것입니다(즉, 내가 실행할 것입니다).
여전히 0이면 NPE가 발생합니다.
//var str1: String? = "Hello Kotlin"
//str1 = null
//println("str1 : $str1 length : ${str1?.length}")
//println("str1 : $str1 length : ${str1!!.length}") // NPE 발생