안녕하세요 Okoo입니다.
오늘은 Nullable과 NonNull, 엘비스 연산자와 notNull에 대해서 알아보려 합니다.
전에 Java를 공부 할 때 가장 많이 보는 오류중 하나인 NPE(Null Point Exception)를 코틀린에서는 어떠한 형식으로
해결하고 있는지 알아 보겠습니다.
1
2
3
|
//Java
int num = 100;
int num2 = null;
|
cs |
Java의 코드 입니다. Java의 경우에는 null이 변수안에 들어가는 것을 허용하고 있어
위와 같은 방식으로 사용을 해도 전혀 문제가 되지 않습니다.
하지만 코틀린에서는 이러한 형식은 허용되지 않습니다.
이렇게 변수에 null을 넣지 않는 방식을 nonNull타입 이라고 합니다.
코틀린의 경우 기본적인 default값이 nonNull타입으로 선언이 되어있어 값에 null이 될 수있도록 허용해주는 것이
바로 Nullable입니다.
var 변수이름 : 변수타입? = 값
이러한 형식으로 사용이 가능 합니다.
1
2
|
var a : Int? = 100
a = null
|
cs |
위와 같이 Int?로 선언이 되어있는 a변수는 숫자타입과 null이 들어갈 수 있는 형식이 됩니다.
한마디로 null값의 대입이 허용되어야 한다면 명시적으로 타입을 지정해 줘야 합니다.
let함수
let함수란 범위함수중 하나로 변숫값이 null이 아닌경우에 실행할 코드 블록을 작성할 수 있게
도와주는 함수 입니다.
var c : String? = null
c?.let{
c의 값이 null인 경우에는 코드블록을 실행시키지 않고 null이 아닌경우에만 println을 실행시킵니다.
엘비스 연산자 ?:
엘비스연산자란 null과 null이 아닌값을 구별해주는 연산자 입니다.
var 변수이름 = 변수 ?: null일때 Default값
이러한 형식을 띄우고 있으며
1
2
3
4
|
var a : Int? = null
var b = a ?: 1
println(b)
//1
|
cs |
위와 같이 null이면 기본값을 1로 변경해줍니다.
1
2
3
4
|
var a : Int? = 2
var b = a ?: 1
println(b)
//2
|
cs |
null이 아니면 그대로 a를 반화해 주겠죠
not Null !!
notNull이란 null이 아님을 사용자가 컴파일러에게 알려주는 것이라 생각하면 쉬울것 같습니다.
!!를 붙여 사용하며
1
2
3
4
|
var a : String? = "Hellow"
var str : String = a!!
println(str.length)
//6
|
cs |
이러한 형식으로 사용됩니다.
만약 a에 null이 들어간다면 오류가 발생합니다.
'Android Studio > Android Studio(Kotlin)' 카테고리의 다른 글
코틀린의 조건문 if, for, when (0) | 2021.07.03 |
---|---|
코틀린 연산자 in (0) | 2021.07.01 |
코틀린의 배열 Array와 List, ArrayList (0) | 2021.06.29 |
코틀린의 문자열 타입 String (0) | 2021.06.28 |
코틀린의 변수의 타입 (0) | 2021.06.27 |