[Kotlin] null 값을 처리하는 방법, 동일여부 확인 설명 & 예제
- Language/Kotlin
- 2021. 2. 11.
728x90
nullable 변수에서 null을 처리하는 법
- nullable 변수
var sample: String? = null
But null상태로 속성이나 함수를 쓰려고 하면 -> null pointer exception 발생 (null 인 객체를 참조하면 발생하는 오류)
var sample: String? = null
if (sample != null)
println(sample.toUpperCase())
위와 같은 null Check 필요
?.
null safe operatorsample?.toUpperCase()
참조연산자를 실행하기 전에 먼저 객체가 null 인지 확인부터 하고 객체가 null이라면 뒤의 구문을 실행하지 않는 연산자 이다.
?:
elvis operatorsample?:"default"
객채가 null이 아니라면 그대로 사용하지만 null이라면 우측의 객체로 대체됨
!!.
non-null assertion operatorsample!!.toUpperCase()
참조 연산자를 사용할 때 null여부를 컴파일시 확인하지 않도도록 하여 런타임시 null pointer exception이 나도록 의도적으로 방치하는 연산자
var a: String? = null
println(a?.toUpperCase())
println(a?:"default".toUpperCase())
println(a!!.toUpperCase())
스코프 함수와 함께 사용
var a: String? = null
//스코프 함수와 같이 사용하면 편리
//null인경우 스코프 전체가 실행되지 않음
a?.run {
println(toUpperCase())
println(toLowerCase())
}
var b: String? = "Kotlin Exam"
//null을 체크하기 위해 if문 대신 사용하면 상당히 편리할 수 있다
b?.run {
println(toUpperCase())
println(toLowerCase())
}
변수간의 동일성 확인하는 법
- 내용의 동일성
- 다른 객체더라도 내용만 같으면 동일하다고 판단
a == b
- equals 함수의 Boolean 값으로 판단
- 객체의 동일성
- 메모리상의 같은 객체를 가리키고 있을때만 동일하다고 판단
a === b
fun main() {
var a = Product("콜라", 1000)
var b = Product("콜라", 1000)
var c = a
var d = Product("사이다", 1000)
println(a == b)
println(a === b)
println()
println(a == c)
println(a === c)
println()
println(a == d)
println(a === d)
}
class Product(val name: String, val price: Int) {
override fun equals(other: Any?): Boolean {
if (other is Product) {
return other.name == name && other.price == price
} else {
return false
}
}
}
728x90
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] 중첩 클래스와 내부 클래스 설명 & 예제 (0) | 2021.02.12 |
---|---|
[Kotlin] 함수의 argument 다루기 & infix 함수 설명 & 예제 (0) | 2021.02.12 |
[Kotlin] 문자열을 다루는 여러가지 방법 설명 & 예제 (0) | 2021.02.11 |
[Kotlin] 리스트(List) 설명 & 예제 (0) | 2021.02.09 |
[Kotlin] 제너릭(Generic) 설명 & 예제 (0) | 2021.02.09 |