Programming Language/Kotlin

[Kotlin] var, val 차이 간단 정리

Tenacity_Dev 2023. 7. 4. 16:58
728x90

var, val 이란

val : 불변 변수로, 값의 읽기만 허용되는 변수. Value의 약자이다.
var : 가변 변수로 값의 읽기와 쓰기가 모두 허용되는 변수, Variable의 약자이다.

변수는 값을 저장하는 메모리 공간에 붙는 이름이다. 

코틀린에는 두가지의 형을 지원하게 되는데 위에서 설명한 val과 var이다.

위에서 설명한 것 처럼 val과 var은 각각 불변 변수와 가변 변수를 나타내고 있고, 공통적으로 초기화시에 값을 할당하지 않는다면 반드시 Type명시해야한다. 다만 컴파일러가 변수 탕비을 추론할 수 있는 경우에는 Type를 생략해도 된다.

 

val

  • val로 지정된 불변 타입 변수는 초기에 값을 할당되면 나중에 값을 변경할 수 없다. 강제로 변수를 변경하려고 한다면 컴파일 에러가 발생한다.
  • 즉, 값을 초기화만 가능하고 변경은 불가능하다. Java에서는 final과 같다.
  • val은 한번만 초기화 되며 값을 변경할 수 없지만 컴파일러가 코드 문맥을 확인시 val 변수가 한번만 초기화 되는것이 맞다면 개발자가 상황에 따라 val를 여러 값으로 초기화(할당) 할 수 있다. (ex) flow에서 update
  • val은 초기화 후 값을 변경이 불가능한 것이 맞지만 변수의 참조가 가리키는 객체의 내부 값은 변경이 가능하다.
// val 변수 선언하기
val CHANGE_NO = 100
println(CHANGE_NO)
//CHANGE_NO = 200 // val cannot be reassigned

val SCHOOL_NAME = "대한민국 학교"
println(SCHOOL_NAME)

 

var

  • var로 지정된 가변 타입 변수는 초기화 후 값을 변경이 가능.
  • 하지만, 다른 타입의 값을 넣을 수는 없습니다. 처음에 String 타입으로 초기화를 한뒤 Int 타입의 값을 넣을수는 없다.
  • 그렇다고 해당 변수를 뒤에서 Int 타입으로 재정의 한다면 타입 미스매치(Type mismatch) Error가 발생합니다.
    이미 정의된 타입을 변경하려면 자바와 같이 형변환을 해야합니다.(cast)
// var 변수 선언하기
var changeYes = 100
//var changeYes // 선언과 동시에 초기화를 시켜줘야 한다
println(changeYes)

changeYes = 200
println(changeYes)

 

참고

https://velog.io/@jojo_devstory/Kotlin-val-var%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

Kotlin - val, var의 차이점

코틀린은.... 코틀린은 2017년 구글 I/O에서 공식언어로 지정된 후 근래 신규로 개발하는 안드로이드 앱은 거의 다 코틀린으로 개발 하는 추세며 기존에 자바로 개발하던 앱들도 코틀린으로 전환

velog.io

https://kotlinworld.com/173

 

[Kotlin] var과 val의 차이는 무엇인가?

변수란 무엇인가? 변수는 값(데이터)을 저장하는 메모리 공간에 붙은 이름이다. 이름처럼 고전적인 변수는 값을 읽고 쓰는 것을 모두 지원한다. 실제로 다른 프로그래밍 언어인 Java나 Python등에

kotlinworld.com

https://kotlinlang.org/

 

Kotlin Programming Language

 

kotlinlang.org

 

728x90