Null 안전성
- kotlin은 NullPointerException(NPE)를 방지하기 위하여 Null 안전성을 제공
- 커파일 타임에 null 관련 오류를 방지
null 타입 선언
- 타입 뒤에 ? 을 붙여서 null이 가능함을 명시
var name: String = "희우" // null 불가능
var nickname: String? = null // null 가능 (nullable)
Null-safe 연산자
- ?.
- safe call operator
- null일 경우에는 실행을 하지 않음
val length = nickname?.length // nickname이 null이면 length도 null
- ?:
- Elvis operator
- null일 경우에도 default 값을 줄 수 있음
val length = nickname?.length ?: 0 // nickname이 null이면 0 반환
- !!
- not-null assertion
- null이 아님을 확신할 때 강제로 사용
- null일 경우 런타임 에러 발생
val length = nickname!!.length // nickname이 null이면 예외 발생
스마트 캐스트 (Smart Cast)
- 조건문에서 null을 체크할 경우 컴파일러가 자동으로 non-null 처리
fun printLength(str: String?) {
if (str != null) {
println(str.length) // 스마트 캐스트로 str은 non-null로 취급
}
}
문제
1. str이 null이 아니면 길이를 반환하고 null일 경우 0을 반환하는 getLengthOrZero 함수를 구현하시오.
답:
fun getLengthOrZero(str: String?): Int {
return str?.length ?: 0
}
2. str이 null이 아니면 대문자로 변환해서 출력하고 null이면 아무것도 처리하지 않는 printUpperIfNotNull 함수를 구현하시오.
답:
// str이 null이 아니면 대문자로 변환해서 출력, null이면 아무 것도 안함
fun printUpperIfNotNull(str: String?) {
// 여기 코드 작성
println(str?.uppercase())
}
'개발새발 > 코틀린' 카테고리의 다른 글
[코틀린/Kotlin] sealed class/when (0) | 2025.08.22 |
---|---|
[코틀린/Kotlin] 스코프 함수 (0) | 2025.08.21 |
[코틀린/Kotlin] 확장함수 (0) | 2025.08.19 |
[코틀린/Kotlin] 람다와 고차함수 (3) | 2025.08.18 |
[코틀린/Kotlin] 컬렉션 (3) | 2025.08.16 |