변수란 무엇인가?
변수는 값(데이터)을 저장하는 메모리 공간에 붙은 이름이다. 이름처럼 고전적인 변수는 값을 읽고 쓰는 것을 모두 지원한다. 실제로 다른 프로그래밍 언어인 Java나 Python등에서는 변수를 만들면 값을 쓰고 읽을 수 있다.
하지만 변수의 값이 바뀔 수 있는 부분이 많아진다는 것은 프로그램에 오류가 일어날 수 있는 부분이 많아진다는 것을 뜻한다. 때문에 최근 함수형 프로그래밍 패러다임에서는 값의 불변성을 중요하게 다룬다. 이에 대해 코틀린은 값이 변할 수 있는 가변 변수인 변수(var)와 값이 변할 수 없는 불변 변수(val) 두가지의 변수를 지원한다.
코틀린에서 지원하는 변수의 종류 : var, val
코틀린에서 지원하는 변수의 종류는 다음과 같다.
val: 불변(Immutable) 변수로, 값의 읽기만 허용되는 변수. 값(Value)의 약자이다.
var: 가변(Mutable) 변수로, 값의 읽기와 쓰기가 모두 허용되는 변수. 변수(Variable)의 약자이다.
실제 코틀린의 가변 변수와 불변 변수는 값이 저장된 메모리 공간을 가리키며 같은 메모리 공간 내에서는 값이 변할 수 있기 때문에 가변 변수와 불변 변수는 엄밀히 말하면 가변 변수와 불변 변수가 아니게된다. 이는 이후 심화에서 다루도록 한다.
변수에 값 할당하기
변수에 값을 할당하는 방식은 간단하다. 먼저 처음에 변수의 값이 변경될 수 있는지에 따라 val 또는 var을 쓴다. 이후 변수명을 쓰고 뒤에 =을 쓴다음 해당 변수에 저장하고자 하는 값을 입력한다. 그러면 해당 값이 저장된 메모리 공간이 변수에 할당된다.
위의 방식에 따라 이 블로그를 위한 변수 두가지를 만들어보도록 하겠다. 먼저 val blogName 이라는 변수에 "Kotlin World" 라는 단어를 할당할 것이며, var date라는 변수에 "2021-10-02"를 할당할 것이다.
재할당 할 수 없는 val
자 이제 val로 선언된 blogName 에는 "Kotlin Blog"를 할당해보자.
그러면 오류 표시(빨간 줄)와 같이 Val cannot be reassigned(Val은 재할당 될 수 없습니다) 라는 오류가 생긴다. 이는 값을 다시 할당 할 수 없도록 val로 선언되었기 때문이다.
값을 재할당 할 수 있는 var
이번에는 var로 선언된 date에 "2021-10-03"이라는 단어를 할당해보자.
date에 "2021-10-03" 이오류 표시 없이 잘 할당된 것을 볼 수 있다. 이를 확인하기 위해 해당 값을 콘솔창에 프린트 해보자.
위와 같이 main함수를 작성한 후 fun 왼쪽의 재생버튼을 누르면 "2021-10-03"이 출력되는 것을 확인 할 수 있다.