1. Nullable
코틀린의 가장 큰 장점이라 할 수 있다.
자바로 코딩하다보면 빌드 할 때 NPE(Null Pointer Exception) 오류를 자주 접하게 된다.
오류가 나면 어디서 나는지도 찾아야하고 예외처리를 다 해줘야한다.
코틀린은 컴파일 단계에서 오류를 나타내주기 때문에 빌드할 때 NPE 오류를 접할 일이 없고, null 처리가 간편하다.
? (Nullable Type)
fun nullcheck() {
var name = "taeki"
var nameInUpperCase = name.uppercase()
var nullName: String? = null
var nullNameInUpperCase = nullName?.uppercase()
}
변수를 선언할 때 null을 넣고 싶으면 ? 연산자를 써주면 된다.
위 두 줄은 평소에 쓰던데로 쓰는 방식이고 아래는 nullName이라는 변수에 초기화할 값이 없어서 null을 넣을 때 ? 를 선언해줬다.
nullNameInUpperCase는 nullName이 null이 아니면 uppercase 메서드를 적용하고, null이면 이 자체를 null로 반환한다.
?: (엘비스 연산자)
val lastName: String? = null
val fullName = name + " " + (lastName?: "NO lastName")
println(fullName)
만약 lastName이 null 이라면 "NO lastName"으로 대신 사용하라는 의미이다.
2. NonNull
!! (NonNull)
fun ignoreNulls(str: String?){
val mNotNull: String = str!!
val upper = mNotNull.uppercase()
println("upper : ${upper}")
}
ignoreNulls 메서드는 Nullable 타입인 str을 파라미터로 받는다.
mNotNull 변수에 받은 str을 넣는데, 메서드를 호출할 때 str이 절대로 null일리가 없다고 하면 !!을 붙여서 사용한다. 말 그대로 null일 리가 없으니까 그냥 하면 돼! 라고 알려준다.
!! 연산자를 사용해서 upper 변수에서 mNotNull 뒤에 ?(Nullable) 연산자를 안 써도 된다.
+ let function
val email: String?= "taekiheoXXXX@nana.vom"
email?.let{
println("my email is ${email}") // email 대신에 it 넣어도 가능
}
리시버 객체를 람다식 내부로 옮겨서 실행하는 구문이다.
Nullable인 email 변수를 선언했다.
email이 null이 아니면 let 함수 내부를 실행한다.
'학습 > Kotlin' 카테고리의 다른 글
Class(상속, 오버라이딩) (0) | 2023.02.26 |
---|---|
Class(클래스 구조, 생성자) (0) | 2023.02.25 |
반복문 (0) | 2023.02.23 |
Array & List (0) | 2023.02.22 |
Expression VS Statement (0) | 2023.02.21 |