티스토리 뷰

Android/Kotlin

[Kotlin] Null 가능성

LeeeGi 2019. 9. 20. 16:16
반응형

1. null 허용?

- 코틀린에서는 기본적으로 Null을 허용하지 않는다.

- 모든 객체는 생성과 동시에 값을 대입하여 초기화해야 한다.

 

val a: String                                // 에러가 난다.

 

val a: String = null                       // 코틀린에서는 기본적으로 Null을 허용하지 않기 때문에 에러가 난다.

 

val a: String? = null                      // 에러가 나지 않는다.

 

val a: String = name!!                   //null  값이 아님을 ( !! )로 보증할 수 있다.

 

var b = if ( a != null ) a else null     // null

b = a?.toB                                  // null → 안전한 호출로 if문을 한 줄로 줄일 수 있다.

b = a?.toB ?: "초기화하시오."          //초기화하시오. 엘비스 연산자로 null이 아닌 값을 반환한다.

 

2. lateinit

초기화를 나중에 하는 경우 사용한다.

 

lateinit var a: String

a = "hello"

 

※ 규칙

 - var 변수에서만 사용가능

 - null값으로 초기화할 수 없다.

 - 초기화 전에는 변수를 사용할 수 없다.

 - Int, Long, Double, Float에서는 사용할 수 없다.

 

3. lazy

val에서 늦은 초기화를 할때 사용한다.

연산을 분리할 수 있어 빠른 실행에 도움이 된다.

처음에만 초기화 로그가 찍힌다.

 

val str: String by lazy {

  Log.d("lazy", "lazy - 초기화")

  "hello"

}

 

tv1.text = lazy

tv2.text = lazy

 

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함