본문 바로가기
안드로이드/Kotlin

[Kotlin] 변수 선언 방법

by 프로나인 2021. 11. 28.

안녕하세요. 프로나인 입니다.

 

코틀린 변수 선언 방법에 대해 알아보도록 하겠습니다. 


코틀린 변수 선언 형태

코틀린 변수는 자바와 다르게 변수형태 선언이 변수명 뒤에 붙습니다.

//var 변수명 : 변수타입 = 초기화
//val 변수명 : 변수타입 = 초기화

var name : String = "pronine"
val name : String = "pronine"

 

그런데 자바와는 또 다르게 변수 선언 앞에 var 와 val 이 있는것을 볼 수 있습니다.

이 친구들은 왜 사용을 하며, 어떤 의미로 사용되는지 아래에서 확인해보시죠!👊

 

var 과 val 의 차이🧐

코틀린은 자바와 다르게 변수 선언시 var 과 val 을 사용하여 타입 선언 없이 바로 값을 할당할 수 있습니다.

  • var = variable의 약어, 변경이 가능(mutable)한 변수 (자바 - 일반 변수와 같다.)
  • val = value의 약어, 변경 불가능(immutable)한 변수 (자바 - final에 해당한다.)

공통적으로 초기화를 할 때 값을 할당하지 않는다면 반드시 변수타입을 명시 해주어야 합니다.

안그러면 아래와 같이 에러 발생합니다.

초기화 시 변수타입을 지정하지 않을 때

아래처럼 초기화를 할 때, 변수타입을 지정해주면 에러가 발생하지 않는것을 확인 할 수 있습니다. 

초기화 시 변수타입을 지정하였을 때

당연한 말이지만 변수 초기화 후 변수 값을 할당하지 않은 상태에서 해당 변수를 사용할 경우 initialized 에러가 발생합니다. 

초기화 후 값을 할당하지 않고 해당 변수를 사용하였을 때

자! 그러면 val 으로 변경 불가능한 변수로 선언 하였는데, 진짜 변경이 불가능한지 확인해볼까요 ?

에러 메세지 - 'Val cannot be reassigned' 번역해보면, Val은 재할당할 수 없습니다. 

재할당할 수 없다면서 'Change to var' 을 권유하고 있는것을 확인 할 수 있는데요. 

val 로 변수 값 재할당을 할 경우

그럼 var 은 변경 가능 변수로 선언 이라 하였는데, 진짜 변경이 가능할까요 ?

age 변수를 15 -> 27 로 값을 할당 하였습니다. 

아래 결과 확인해보니까 진짜 변경이 가능한 것을 확인 할 수 있네요 ! 

var 로 변수 값을 재할당 할 경우

 

그렇다면 변수 선언을 할 때, val 을 사용해야해?? var 을 사용해야해?? 라고 고민하실텐데 

저는 val로 먼저 선언을 하고 나중에 해당 변수를 재할당 해야할 때 var로 바꿔서 사용하고 있습니다. 

물론 이 방법이 정해진 것은 아니지만 저는 이 방법으로 사용하니까 다른 변수 값들이 바뀌는 위험도 줄어들고 하니까 좋더라구요.

(참고로만 생각하세요! 사용법은 여러분 마음입니다. 😁)

댓글