티스토리 뷰

코틀린은 변수를 사용할 때 값이 할당되어 있어야 합니다.

그렇기 때문에 null이면 오류가 발생하는데 null을 허용하려면 ?를 사용하면 됩니다.

        var x: String = null    // 에러
        var y: String? = null   // 작동

x는 ?를 사용하지 않아 에러가 나지만 y는 에러가 나지 않습니다.

 

        var x: String = "OSZ"
        var y: String? = null
        println(x.length)   // 3
        println(y.length)   // 에러
        println(y?.length)  // null
        println(y!!.length)  // 널 검사를 안함 (에러)

이렇게 사용하면 아무것도 안 들어있을 때 null을 호출하게 이용이 가능합니다.

!!를 붙이면 null 검사를 안 하게 됩니다.

덕분에 코드에선 빨간줄이 안 생기지만 실행하면 에러가 발생합니다.

 

 

세이프 콜(?.)과 엘비스 연산자(?:)를 이용해 null을 허용한 변수를 더 안전하게 사용하는 방법입니다.

        var x: String? = "OSZ"
        x = null
        println(x?.length ?: -1)    // -1

첫 번째 줄은 ?를 붙여 null을 허용한 변수 x에 OSZ를 담습니다.

두 번째 줄은 x를 null로 바꿔줍니다.

세 번째 줄에서 x?.length는 x가 null이면 널을 출력하고 null이 아니면 문자열 수를 출력하는데 ?: -1가 들어가 null이면 null대신 -1을 출력해줍니다.

세 번째 줄은 아래 코드와 같습니다.

        println(if (x != null) x.length else -1)    // -1

 

그리고 자바에서는 이렇게 길어집니다.

        String x = "OSZ";
        x = null;
        if (x != null){
            System.out.println(x.length());
        } else {
            System.out.println(-1);
        }

'코틀린 네이티브' 카테고리의 다른 글

코틀린 람다식  (0) 2020.10.21
코틀린 함수 선언하고 호출하기  (0) 2020.10.20
코틀린 연산자  (0) 2020.10.20
코틀린 자료형 변환, 검사하기  (0) 2020.10.18
코틀린 변수와 자료형  (0) 2020.10.18
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함