안드로이드/Kotlin

[Kotlin] var와 val의 차이점

block_626 2022. 8. 6. 14:36

Kotlin이라는 언어를 사용하다 보면 가장 당연하게  쓰는 var, val이 있습니다.

Java에서는 새로운 변수를 만들 때 

int num = 1;

위와 같이 [타입] [변수이름] = [할당될 값 or 인스턴스] 입니다.

 

하지만 Kotlin에서는 

var num1 = 1
val num2 = 2

처럼 Java 문법과 다르게 [타입] 자리에 val또는 var이 들어가게 됩니다.

이 둘의 차이는 간단합니다.

val(value)은 한 번 선언하면 값이 바뀌지 않습니다(JS의 const)

var(variable)은 한 번 선언한 이후 값을 바꿀 수 있습니다.(JS의 let)

 

여기서 둘 다 값을 수정하게되면

var num1 = 1
val num2 = 2

num1 = 3 // 통과
num2 = 4 // 에러

val은 한번 선언하면 값이 바뀌지 않기 때문에 에러가 발생하게 되고 var은 선언한 이후에도 값을 바꿀수 있기 때문에 에러가 발생하지 않습니다.

 

그리고 Kotlin은 타입을 가지고 있어서 변수에 대한 타입을 자동으로 추론합니다.

즉, int형이면 int타입을 가지고 문자열이면 String타입을 자동으로 가지게 됩니다.

 

만약 명시적으로 타입을 선언해주고 싶다면

var num1: Int = 1
val name: String = "티모"

위와 같이 문법을 사용할 수 있습니다.