본문 바로가기
Kotlin

[깡샘의 코틀린 프로그래밍] 정리 4 - 변수 선언법

by 들풀민들레 2018. 3. 2.

본 글은 [깡샘의 코틀린 프로그래밍 - 루비페이퍼] 의 내용을 발췌한 것입니다.

좀더 자세한 내용은 책을 통해 확인해 주세요.

 

 

 

4장. 변수와 함수

 

4.1.1. 변수 선언법 val, var

 

코틀린에서 변수는 val이나 var 키워드를 이용해서 명시적으로 선언해야 합니다.

 

 

이처럼 두 가지 키워드를 제공하는 이유는 코틀린의 변수가 Assign-once(Read-only)와 Mutable로 구분되기 때문입니다. Assign-once 변수는 한 번 초기화하면 더는 변경할 수 없고, Mutable 변수는 언제든지 변경할 수 있습니다. 즉, val (value)은 Assign-once 변수로 선언하고, var (variable)는 Mutable 변수로 선언합니다.

 

코틀린에서 변수를 선언할 때 특징 중 하나는 변수명을 먼저 입력하고, 그 뒤에 콜론(:)을 구분자로 타입을 입력한다는 점입니다. 과거의 프로그래밍 언어(Java, C 같은)들은 타입을 먼저 입력하고 변수명을 그 뒤에 입력하는데, 최신 언어들(코틀린, 스칼라, 스위프트 등)은 변수명을 타입보다 먼저 입력하는 특징이 있습니다.

 

01 package four_one_one

02

03 //변수 선언

04 val data1: Int = 10

05 val data2 = 20

06 var data3 = 30

07

08 fun main(args: Array<String>) {

09   data2 = 40 //에러

10   data3 = 40 //성공

11 }

 

04번 줄의 data1 변수는 Int 타입으로 선언하면서 초깃값 10을 대입했습니다. 그런데 05, 06번 줄의 data2, data3 변수는 데이터 타입을 명시하지 않았습니다. 이처럼 변수를 선언할 때 데이터 타입을 명시하지 않으면 대입하는 초깃값에 따라 적절한 타입으로 알아서 적용됩니다. 따라서 data2, data3에 대입한 초깃값이 정수이므로 타입을 명시하지 않아도 자동으로 Int 타입 변수로 선언됩니다. 즉, 코틀린에서 알아서 값을 유추해 값에 맞는 타입을 적용합니다. 이를' 타입 추론'이라고 합니다.

 

또한, 05번 줄의 data2는 val로 선언했으므로 이후에 값을 변경할 수 없고, 06번 줄의 data3은 var로 선언했으므로 값을 변경할 수 있습니다. 따라서 09번 줄처럼 data2 변숫값을 변경하는 구문은 에러가 발생하고, 10번 줄처럼 data3 변숫값을 변경하는 시도는 정상적으로 실행됩니다