본문 바로가기
대학/안드로이드(코틀린) 정리

안드로이드 변수 선언하기( 코틀린 )

by JJO.A 2022. 10. 21.
변수 선언 형식
val 변수명 : 타입 = 값
var 변수명 : 타입 = 값
  • val : value의 줄임말로 초깃값이 할당되면 바꿀 수 없는 변수를 선언할 때 사용
  • var : variable의 줄임말로 초깃값이 할당된 후에도 값을 바꿀 수 있는 변수를 선언할 때 사용
val data1 =10
var data2 =10

fun main(){
  	data1 =20	//오류
    	data2 =20	//성공
}

val 키워드로 선언된 data1은 추후에 변경을 시도할 때 오류가 발생하지만, var 키워드로 선언된 data2는 변경 가능하다.

 

타입 지정과 타입 추론
val 변수명: 타입= 10
val 변수명= 10
val data1 : Int =10
val data2 =10

변수명 뒤에 콜론(:)을 추가해 타입을 명시 할 수 있으며, 대입하는 값에 따라 타입을 유추(타입 추론)할 수 있을 때 생략할 수 있다.

 

초깃값 할당

최상위에 선언한 변수나 클래스의 멤버 변수는 선언과 동시에 초깃값을 할당해야 한다.

val data1 : Int			//오류
val data2 = 10			//성공

class User{
	val data3 : Int		//오류
    val data4 : Int = 10	//성공
}

함수 내부에 선언한 변수는 선언과 동시에 초깃값을 할당하지 않아도 된다.

fun Fun(){
    val data1: Int
    println("data1 : $data1")	//오류
    data1 = 10
    println("data1 : $data1")	//성공
}

물론 변수를 이용하려면 값을 할당하고 이용해야 한다.

 

초기화 미루기

변수 선언시 초깃값을 할당 할 수 없는 경우가 있다. 이런 경우 값을 이후에 할당 할 것이라고 컴파일러에게 알려 주어야 한다. 이때 사용하는 것이 lateinit키워드와 lazy키워드이다.

 

lateinit 키워드 사용 규칙

  • var 키워드로 선언한 변수에만 사용할 수 있다.
  • int, Long, Short, Double, Float, Boolean, Byte 타입에는 사용할 수 없다.
lateinit var data1: Int		//오류, Int 불가
lateinit val data2: String	//오류, var로 선언해야 함
lateinit var data3: String	//성공

 

lazy키워드

: 변수 선언문 뒤에 by lazy{ }형식으로 선언하며, 소스에서 변수가 최초로 이용되는 순간 중괄호로 묶인 부분이 자동으로 실행되어 그 결과값이 변수의 초깃값으로 할당된다.

val data1: Int by lazy{
    println("여기는 느림보!")
    10
}

fun main() {
    println("여기는 메인!")
    println(data1 + 10)
}

 

실행화면