Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- BOJ
- Coroutine
- Navigation
- HTTP
- CoordinatorLayout
- ViewModel
- LiveData
- 알림
- 백준
- room
- hilt
- DataBinding
- 안드로이드
- activity
- kotlin
- 알고리즘
- View
- CollapsingToolbarLayout
- AppBarLayout
- CustomView
- sqlite
- notification
- lifecycle
- Algorithm
- Behavior
- Android
- 코틀린
- onMeasure
- onLayout
- recyclerview
Archives
- Today
- Total
개발일지
Kotlin in A..Z (4) - null 본문
- null이란
null이란 아무것도 없는 상태를 의미한다.
0 과 null의 차이점은 0은 0이라는 값을 저장한 상태지만 null은 저장한 값이 없는 상태이다.
- 변수에 null 할당하기
변수에 null을 할당하려면 자료형 뒤에 ?를 붙이면 된다.
val str1:String = null // 일반적인 변수에는 null을 저장할 수 없음
// Error : Null can not be a value of a non-null type String
val str2:String? = null // null을 저장하려면 자료형 뒤에 '?'을 붙이면 된다.
여기서 String과 String?은 서로 다른 자료형인걸 주의하자.
예제
코드
val str1:String? = null
println("str1 is $str1")
결과
str1 is null
- null체크
Kotlin에서 null을 허용한 자료형을 사용할 때는 항상 null 체크를 해야한다.
val str1:String? = null
println("str1 len : ${str1.length}") // null체크를 하지 않았기 때문에 Error
// Error Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
조건문
if문으로 null인지 아닌지 검사를 하는 방식이다.
코드
val str1:String? = null
if(str1 == null) {
println("str1 is null")
}
else {
println("str1 len : ${str1.length}")
}
val str2:String? = "개발일지"
if(str2 == null) {
println("str2 is null")
}
else {
println("str2 len : ${str2.length}")
}
결과
str1 is null
str2 len : 4
Safe Call
variable?.member 형식으로 ?로 멤버를 접근하는 방식이다.
null값이 저장되어 있으면 null을 반환한다.
코드
val str1:String? = null
println("str1 len : ${str1?.length}")
val str2:String? = "개발일지"
println("str2 len : ${str2?.length}")
결과
str1 len : null
str2 len : 4
Not null 단정
variable!!.member 형식으로 !!로 멤버를 접근하는 방식이다.
null값이 저장되어 있으면 NullPointException을 throw한다.
코드
val str1: String? = null
println("str1 len : ${str1!!.length}")
결과
Exception in thread "main" kotlin.KotlinNullPointerException
at MainKt.main(main.kt:3)
at MainKt.main(main.kt)
코드
val str1: String? = "개발일지"
println("str1 len : ${str1!!.length}")
결과
str1 len : 4
엘비스 연산자
표현식1 ?: 표현식2 형식으로 표현식1이 null이면 표현식2를 반환한다.
코드
val str1:String? = null
println("str1 len : ${str1?.length ?: 0}")
val str2:String? = "개발일지"
println("str2 len : ${str2?.length ?: 0}")
결과
str1 len : 0
str2 len : 4
'Kotlin (코틀린)' 카테고리의 다른 글
Kotlin in A..Z (6) - 연산자 (0) | 2020.07.10 |
---|---|
Kotlin in A..Z (5) - 자료형 비교, 검사, 변환 (0) | 2020.07.10 |
Kotlin in A..Z (3) - 문자열 (0) | 2020.07.08 |
Kotlin in A..Z (2) - 자료형 (0) | 2020.07.08 |
Kotlin in A..Z (1) - 변수 (0) | 2020.07.08 |
Comments