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
[Kotlin] var과 val의 차이는 무엇인가?
변수란 무엇인가? 변수는 값(데이터)을 저장하는 메모리 공간에 붙은 이름이다. 이름처럼 고전적인 변수는 값을 읽고 쓰는 것을 모두 지원한다. 실제로 다른 프로그래밍 언어인 Java나 Python등에
kotlinworld.com
Kotlin Programming Language
kotlinlang.org
728x90
'Programming Language > Kotlin' 카테고리의 다른 글
[Kotlin] coroutineScope와 supervisorScope (0) | 2024.01.20 |
---|---|
[Kotlin] 코틀린이란 무엇인가 그리고 특징과 주요 개발까지 (2) | 2023.08.24 |
[Kotlin] static, object, companion object 정리 (0) | 2023.01.14 |
[Kotlin] Scope Function 정리 (let, run, with, apply, also) (0) | 2023.01.01 |
[Kotlin] Inline class란 (0) | 2023.01.01 |