728x90
package nullsafe
fun main() {
testFun1("문자열")
//컴파일 에러가 아닌 런타임 에러이다
// testFun1(null)
testFun2("문자열")
testFun2(null)
testFun3("문자열")
testFun3(null)
testMethod1("안녕하세요")
testMethod1(null)
testMehod2("안뇽")
testMehod2(null)
}
// !! 널을 허용하지 않는 변수에 널을 허용하는 변수를 담아준다
// 되도록 사용하지 말자
fun testFun1(str:String?){
val value1:String = str!!
println("value1 = ${value1}")
}
// ? 연산자
// null일 경우 뒤에 값 default로 사용
fun testFun2(str:String?){
val value1:String = str ?: "기본문자열"
println("value1 = ${value1}")
}
// ?. 연산자
// null값이 존재하면 값 자체를 null로 변한
fun testFun3(str:String?){
println("str = ${str}")
println("str?.length = ${str?.length}")
}
fun testMethod1(str: String?) {
println(str?.length)
// null이 아니면 스마트 캐스팅 발생
// 가급적이면 is 사용
if (str is String) {
// 스마트 캐스팅 발생
println(str.length)
}
// 가급적이면 is 사용
if (str != null) {
// 스마트 캐스팅 발생
println(str.length)
}
}
fun testMehod2(str: Any?) {
if (str is String) {
println(str.length)
}
}
728x90
'언어 > Kotlin' 카테고리의 다른 글
코틀린 열거형 (0) | 2022.05.25 |
---|---|
코틀린 캐스팅 (0) | 2022.05.25 |
코틀린 익명 중첩 클래스 (0) | 2022.05.25 |
코틀린 Generic (0) | 2022.05.25 |
코틀린 DataClass (0) | 2022.05.25 |