티스토리 뷰
728x90
반응형
SMALL
안녕하세요, 안드로이드 앱 개발을 즐기는 여러분! 오늘은 Kotlin에서의 중요한 주제 중 하나인 "널 안정성(Null Safety)"에 대해 알아보겠습니다. 안드로이드 앱을 개발하면서 가끔씩 마주치게 되는 널 포인터 예외를 방지하고 코드의 안정성을 높이는 방법을 배워보겠습니다.
1. 널이란 무엇인가?
널(Null)은 어떤 값도 없음을 나타내는 특별한 상태를 말합니다. Kotlin은 기본적으로 모든 변수를 널이 될 수 없는 것으로 간주합니다. 그러나 때로는 널이 될 수 있는 변수를 사용해야 하는 경우가 있습니다.
2. 널 안전성 기능
2-1. 널 체크 (Null Check)
val name: String? = getName()
if (name != null) {
println("Name is $name")
} else {
println("Name is null")
}
2-2. 안전한 호출 (Safe Call Operator)
val length: Int? = name?.length
2-3. 엘비스 연산자 (Elvis Operator)
val result: String = name ?: "Default Name"
3. 널 안정성과 함수
3-1. 반환 타입에 널 허용하기
fun findUserById(id: String): User? {
// 사용자를 찾지 못하면 null 반환
// ...
}
val user: User? = findUserById("123")
3-2. 널 병합 연산자 (Null Coalescing Operator)
val username: String = user?.username ?: "Guest"
4. 널 안정성과 컬렉션
val userList: List<User?> = // ...
// 널이 아닌 항목만 골라내기
val nonNullUsers: List<User> = userList.filterNotNull()
5. 통합 예제: 사용자 프로필 출력하기
data class UserProfile(val name: String, val age: Int)
fun getUserProfile(userId: String): UserProfile? {
// 사용자 프로필을 가져오지 못하면 null 반환
// ...
}
val userProfile: UserProfile? = getUserProfile("123")
// 안전한 호출과 엘비스 연산자를 사용하여 출력
val profileInfo: String = "Name: ${userProfile?.name ?: "Guest"}, Age: ${userProfile?.age ?: "Unknown"}"
println(profileInfo)
마무리
널 안정성은 Kotlin에서의 중요한 개념 중 하나로, 안드로이드 앱 개발 시 발생할 수 있는 예외를 방지하고 안전한 코드를 작성하는 데 큰 도움을 줍니다. 항상 널 안정성을 고려하여 개발하는 것이 좋습니다. 다음에는 안드로이드에서 자주 사용되는 XML 레이아웃과 상호작용하는 방법에 대해 알아보도록 하겠습니다. 계속해서 흥미로운 Kotlin 코딩되세요! 🚀
728x90
반응형
LIST
'안드로이드 첫번째 걸음' 카테고리의 다른 글
Kotlin 기초 : 안드로이드 앱 개발을 위한 시작 (7. 데이터 저장 / 관리) (0) | 2023.12.25 |
---|---|
Kotlin 기초 : 안드로이드 앱 개발을 위한 시작 (6. XML 레이아웃과 상호작용) (0) | 2023.12.22 |
Kotlin 기초 : 안드로이드 앱 개발을 위한 시작 (4. 클래스와 객체) (2) | 2023.12.21 |
Kotlin 기초 : 안드로이드 앱 개발을 위한 시작 (3. 함수) (2) | 2023.12.21 |
Kotlin 기초 : 안드로이드 앱 개발을 위한 시작 (2. 조건문과 반복문) (2) | 2023.12.21 |
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- coroutine
- UI스레드
- 생명주기
- 안드로이드 앱 개발
- 사이버보안
- MVVM패턴
- 안드로이드기초
- 부동산
- 부동산 경매
- 앱개발
- 안드로이드앱개발
- fragment생명주기
- 클린아키텍처
- 경매
- 디자인패턴
- cipher
- 내부데이터베이스
- RoomDatabase
- 안드로이드
- 기초
- 코루틴
- 비동기처리
- Android
- 모듈화
- kotlin
- RxJava
- 코틀린
- 비동기
- 안드로이드개발
- Fragment
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함