티스토리 뷰
코틀린은 Null Safety 언어입니다. 한마디로, Null에 대해 안전하다는 의미입니다.
Null 과 0은 어떤 차이가 있을까요?
많은 커뮤니티에서 휴지를 통해 이 둘의 차이를 비교하고 있습니다.
0은 휴지를 다 사용하고, 휴지심이 남은 상태를 말합니다.
Null은 휴지심도 없는 상태를 말합니다. 즉, 존재하지 않거나 모르는 상태입니다.
Null이 안전하지 않은 이유는 NullPointExceptionError를 발생시키기 때문입니다.
코틀린에서는 Null에 대항하기 위해 다음의 문법을 사용합니다.
1. ? -> Null 값이 아닌 경우, 이하 구문을 실행.
2. !! -> Null 값이 아님을 보장.
예를 들어, button?.setOnClickListener로 작성한 경우, 버튼이 널 값이 아니라면, 뒤의 리스너를 장착한다는 의미입니다.
button!!.setOnClickListner로 작성한 경우, 버튼의 값이 100프로 널 값이 아니다라는 것을 의미합니다. 100프로 확신하기는 힘들기 때문에, !! 대신에 ?를 자주 사용하는 것이 좋습니다.
또한, Int, Double, Float, Class 뒤에 ?를 붙이면, 널 값이 들어갈 수 있는 타입으로 바뀌게 됩니다.
val number : Int? = null
Double? Float? Class?
널 값이 들어갈 수 있는 변수와 일반적인 변수를 더하려면, 함수를 이용합니다.
val number: Int = 5
val number2: Int? = null
val number3 = number2?.plus(number)
위의 예문을 보면, number2?에서 number2가 널 값이 아니라면, 뒤의 plus 함수가 실행되어, 5를 더한 값을 number3로 넘겨주세 됩니다. number2는 이미 널 값이므로, 뒤의 함수는 실행되지 않으며, 따라서 number3의 값도 널 값이 됩니다.
코틀린의 엘비스 연산자에 대해 추가적으로 살펴 봅니다. 삼항연산자인 엘비스 연산자를 통해 널 값에 대항할 수 있습니다.
val number: Int? = null
val elvisNumber = number ?: 10
위의 예시는 number가 널값이라면, 10이 들어가는 의미입니다. 널값이 아니라면, 원래의 값이 들어가게 됩니다.
'Kotlin' 카테고리의 다른 글
랜덤 함수 Random( ) (0) | 2021.07.28 |
---|---|
lateinit, lazy init (0) | 2021.07.09 |
람다 표현식 Lamda Expression (0) | 2021.07.09 |
데이터 클래스 Data Class (0) | 2021.07.08 |
범위 함수 Scope Function (Apply, Also, Let, With, Run) (0) | 2021.07.08 |
- Total
- Today
- Yesterday
- 뷰 바인딩
- ToDo List 앱 만들기
- android adapter
- 2007년 사건사고
- 2021년 사건사고
- 2019년 사건사고
- tabLayout
- view binding
- RecyclerView
- Bmi Calculator
- notifyDataSetChanged
- 안드로이드 프로젝트
- 리사이클러뷰
- 미제사건
- 애드뷰
- 안드로이드 스튜디오 에러
- 자바스크립트 배열
- 탭레이아웃
- 안드로이드 어댑터
- 리스트뷰
- 메소드 오버라이딩
- 안드로이드 앱 만들기
- bmi 계산기 만들기
- lazy init
- 상대적 레이아웃
- 대한민국 미제사건
- 인텐트
- addView
- findViewById
- 선형 레이아웃
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |