시스템아 미안해

Variables 본문

책/Kotlin Essentials

Variables

if else 2026. 1. 9. 11:20

Kotlin에서 변수를 선언하는 방식은 간단하다.
변수는 항상 val 또는 var로 시작하고, 그 뒤에 변수 이름과 초기값을 작성한다.

fun main() {
    val a = 10
    var b = "ABC"
}

이 구조가 Kotlin 변수 선언의 기본 형태다.


val과 var의 차이

Kotlin에는 두 가지 변수 선언 키워드가 있다.

var

var는 variable의 약자로,
값을 다시 할당할 수 있는 변수를 의미한다.

var b = "ABC"
b = "CDE"

초기화 이후에도 새로운 값을 대입할 수 있다.


val

val은 value의 약자로,
초기화 이후 값을 다시 할당할 수 없는 변수를 의미한다.

val a = 10
// a = 12 // 컴파일되지 않음

val로 선언된 변수는 한 번 값이 정해지면 변경할 수 없다.


예제

fun main() {
    val a = 10
    var b = "ABC"
    println(a) // 10
    println(b) // ABC

    b = "CDE"
    println(b) // CDE
}

변수 이름 규칙

Kotlin 변수 이름에는 다음을 사용할 수 있다.

  • 문자
  • 언더스코어 _
  • 숫자 (단, 첫 글자로는 사용할 수 없음)

관례적으로 변수 이름은 camelCase를 사용한다.
즉, 소문자로 시작하고, 여러 단어로 이루어진 경우 각 단어의 시작을 대문자로 작성한다.


타입 추론

Kotlin에서 변수를 선언할 때 타입을 명시하지 않아도 된다.

val a = 10
var b = "ABC"

그렇다고 Kotlin이 타입이 없는 언어는 아니다.
Kotlin은 정적 타입 언어이며,
변수의 타입은 초기값을 기준으로 자동 추론된다.

위 코드에서:

  • a는 Int
  • b는 String

으로 추론된다.


타입을 명시적으로 지정하기

필요한 경우 변수 이름 뒤에 :와 타입을 붙여
타입을 명시적으로 선언할 수 있다.

fun main() {
    val a: Int = 10
    var b: String = "ABC"
}

선언과 초기화

변수 선언과 초기화를 분리하는 것도 가능하다.

fun main() {
    val a: Int
    a = 10
    println(a)
}

이 경우 Kotlin은
값이 할당되기 전에는 변수를 사용할 수 없도록 보장한다.

다만, 책에서는 가능하다면 변수는 선언과 동시에 초기화하는 것을 권장한다.


변수에 대입할 수 있는 값

Kotlin에서 = 오른쪽에는
**값을 반환하는 모든 표현식(expression)**이 올 수 있다.

책에서 언급하는 대표적인 경우는 다음과 같다.

  • 기본 타입 리터럴 (10, "ABC" 등)
  • 조건문 표현식 (if, when, try-catch)
  • 생성자 호출
  • 함수 호출
  • 객체 표현식(object expression) 또는 객체 선언(object declaration)
  • 함수 리터럴(람다, 익명 함수, 함수 참조)
  • 요소 참조(element reference)

이 장에서는 이후 내용을 다루기 전에,
먼저 기본 타입 리터럴부터 살펴본다.


마무리

Variables 챕터에서 다룬 내용은 다음으로 정리할 수 있다.

  • Kotlin 변수는 val 또는 var로 선언한다
  • val은 재할당 불가, var는 재할당 가능
  • Kotlin은 정적 타입 언어이며 타입을 자동으로 추론한다
  • 타입은 필요할 경우 명시할 수 있다
  • 변수는 가능하면 선언과 동시에 초기화한다
  • 변수에는 값을 반환하는 표현식을 대입할 수 있다

'책 > Kotlin Essentials' 카테고리의 다른 글

The power of the for loop  (0) 2026.01.11
Functions  (0) 2026.01.11
Conditional statements: if, when, try, and while  (1) 2026.01.10
Basic types, their literals and operations  (0) 2026.01.09
Your first program in Kotlin  (0) 2026.01.09