Kotlin 변수 : 상수, lateinit, lazy

hjseo-dev·2022년 5월 9일
0

Android

목록 보기
10/18

📍 kotlin의 변수

  • var : 한번 할당 된 객체를 다른 객체로 변경하여 사용할 수 있다
var p = Person("hyeji",2004)
p = Person("eunji",1998)
  • val : 한번 할당하면 변경할 수 없다 (단, 객체 내부 속성은 변경가능)
val a = Person("key",2000)
  • 상수 (const) : 컴파일 시점에 결정되어 절대 변경이 불가하다 (기본 자료형만 선언 가능)
const val CONST_INT = 1234

//반드시 companion object 안에 선언해야한다!
class Sample{
	companion object{
		const val CONST_A = 1312
	}
}
  • 사용할 경우 Sample.CONST_A 고정적인 값으로만 사용한다
  • 상수의 이름은 대부분 대문자와 언더바를 사용한다
  • 변수는 런타임 시 시간이 더 소요되기 때문에 고정적으로 사용할 값을 선언해주어 성능을 향상시킬 수 있다!

📍 lateinit (늦은 초기화)

Q. 자료형만 지정하고 나중에 객체를 할당하려면...

선언과 할당을 동시에 할 수 없을 경우에는 lateinit을 사용하여 먼저 선언해두고, 나중에 할당하도록 할 수 있다!

//먼저 선언만 해둔다
lateinit var a : Int
  • 선언 후 할당하기 전 까지는 변수 사용이 불가하다
  • 기본 자료형에는 사용할 수 없다 (String 가능)
  • 초기화 되었는지 확인하는 방법은 변수 앞에 "::"을 붙이고 .isInitalized를 사용하면 된다 (오류방지)
::a.isInitialized

📍 lazy (지연 대리자 속성)

변수를 사용하는 시점까지 초기화를 늦춰준다. 코드상에서는 선언과 동시에 초기화 되는 것 처럼 보이지만 실제 실행하면 사용될 때 초기화 된다

//선언
val a :Int by lazy{7}
.
.
.
print(a) //이때 실제로 초기화 된다!
  • 코드의 실행 시간을 최적화 할 수 있다
  • 람다함수 형태이고, 여러 할당자 중 맨 마지막 구문이 최종적으로 지정된 값이다

0개의 댓글