코틀린은 변수를 사용할 떄 반드시 값이 할당되어 있어야 한다.
만약 값이 할당되어 있지 않다면
null 상태가 된다.
이때 null을 허용하려면 "?" 기호를 사용하여 선언하면 된다.
-
프로그램이 실행되는 도중에 값이 null인 변수에
접근하려고 하면
NullPountException(NPE) 가 발생하게 된다.. 너무싫어...
아마 코딩을 해본 사람들은 꼭 한번씩 봤을 오류..휴..
null을 처리하는 코드를 한번 작성해보겠다
str1의 문자열 뒤에 ? 기호를 붙여주고
str1 에 null값을 할당해 준 후 str1을 출력해보자
원래 null값을 할당해주면 npe오류가 나야하는데
? 기호를 붙여줌으로서 null값을 할당할 수 있게 되었다.
세이프 콜과 non-null 사용하여 null값 허용
null값이 할당되어있는 문자열의 길이를 구하려고
str.length를 사용하면 어떻게 될까?
당연히 NPE 오류가 발생할 것이다.
이럴 때 세이프 콜인 .? 기호를 사용하여
str,?length를 출력하면 안전하게 호출이 가능하다.
-
non-null 은 null이 아니다 라는 것을 단정하므로
컴파일러가 null 검사를 하지 않고 무시한다.
하지만 실행 중에 NPE를 발생시킨다,
이럴 때 조건문을 활용해 NULL을 허용한 변수를 검사해보자
-
조건문을 추가해서 null 상태를 검사해보자
if(str1 != null) str,length를 출력하고
null 이 할당되어 있으면 else값인 -1을 출력하라는
조건식이 있다.
-
str1에는 null값이 할당되어 있기 때문에
실행시키면 length에는 -1 값이 출력될 것이다.
성공적으로 출력되었음을 확인할 수 있다.
세이프 콜과 엘비스 연산자 활용
null을 허용한 변수를 조금 더 안전하게 사용하기 위해
세이프콜(?.) 과 엘비스 연산자 (?:) 를 사용해보겠다.
-
여기서 엘비스 연산자 ?: 는
null인지 아닌지를 검사한 후
null이 아니라면 왼쪽 식을 그대로 실행하고,
null이면 오른쪽 식을 실행한다.
코드를 통해 자세히 알아보자
이렇게 코드가 있다고 하면
str1이 null값이면 오른쪽 값인 -1을,
null 이 아니면 왼쪽 값이누str1?.length 를 반환하게 될 것이다.
str1값은 null이므로 -1을 반환하게 될 것이다
결과값이 제대로 출력된 것을 확인할 수 있다
-
null 너무 싫다.. ㅠㅠ
'kotlin' 카테고리의 다른 글
코틀린 독학 5일차_2 :: 코틀린 연산자 (2) | 2021.02.09 |
---|---|
코틀린 독한 5일차 :: 자료형 비교하고 검사하기 (0) | 2021.02.09 |
코틀린 독학 3일차 :: 변수와 자료형 (0) | 2021.02.08 |
코틀린 독학 2일차 :: 코틀린 패키지 (2) | 2021.02.08 |
코틀린 독학 1일차 (2) | 2021.02.07 |