본문 바로가기

kotlin

코틀린 독학 4일차 :: 자료형 검사 후 변환

코틀린은 변수를 사용할 떄 반드시 값이 할당되어 있어야 한다.

만약 값이 할당되어 있지 않다면 

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 너무 싫다.. ㅠㅠ