leexx 2023. 2. 3. 18:00

변수란

  • 문자열, 숫자 또는 다른 값이 될 수 있는 값의 저장소 이다 (storage for a value).
  • 모든 변수는 이름, 식별자(name, Identifier) 로 구분 한다.

 

변수 선언

  • 코틀린에서는 변수 선언에 대해 두 keyword 가 있다.
  • keyword 없이 변수를 선언할 수 없다.
    • val IDE = IntelliJ (O)
    • IDE = "IntelliJ" (X)
  • val
    • immutable variable (constant) 로, 한번 선언하면 값을 바꿀 수 없다.
    • const 와 함께 사용하면 컴파일 타임에 선언되는 상수를 만들 수 있다. 이 값은 런타임에 바뀌지 않는다.
  • var
    • mutable variable 로 값을 얼마든지 바꿀 수 있다.

 

val, var 선언하고 출력하기

// val 선언하기
val IDE = "IntelliJ"

// var 값 변경하기
var language = "JavaScript"
language = "Kotlin"

// 한 줄에 하나씩 출력된다
println(IDE) // IntelliJ

// 이어서 출력된다
print(IDE)
print(language) // IntelliJKotlin

 

컴파일 타임에 선언되는 변수 선언하기 (const val)

  • main 함수 밖에서 선언 되어야 한다.
  • const val xx = y 로 선언하면 컴파일 타임에 선언되는 상수 를 만들 수 있다. 이 값은 런타임에 바뀌지 않는다.
  • 선언과 동시에 값을 할당해야 한다. 선언만 해둘 수 없다.
const val MY_INT_1 = 1024

// 선언과 동시에 할당이 이루어져야 한다.
const val MY_INT_2; // ERROR, Property must be initialized

fun main() {
    // main 함수 밖에다 선언해야 한다
    const val MY_INT_2 = 2048 // ERROR, Modifier 'const' is not applicable to 'local variable'
}

 

할당 전에 사용하는 것은 안된다

  • JavaScript 와 달리, Kotlin 은 할당 전에 사용할 수 없다. 만약 사용하게 되면, 컴파일러에서 Variable xx must be initialized 라는 에러를 띄운다.
val myVal1: String
var myVar1: String

print(myVal1) // ERROR, not initialized
print(myVar1) // ERROR, not initialized

myVal1 = "myVal1"; // initialized
myVar1 = "myVar1"; // initialized

// 물론 위에서 에러가 났기 때문에 실행은 안된다
print(myVal1) // myVal1
print(myVar1) // myVar1

 

val 과 Mutability 에 대해서 (val 로 mutable 한 배열을 선언하면, 값을 바꿀 수 있을까?)

The val keyword does not prohibit changing the internal state of the list, it only prohibits reassigning the variable.
  • valImmutable 과 동의어가 아니다. 새로운 값을 할당을 못하는 것이다.
  • 아래 예시처럼 val 로 선언하였어도, 배열에 값 추가가 가능하다. 다만 다시 새롭게 할당을 못할 뿐이다.
// list 생성
val myMutableList = mutableListOf(1, 2, 3, 4, 5)

myMutableList.add(6) // 가능하다

println(myMutableList) // [1, 2, 3, 4, 5, 6]

// Val cannot be reassigned 라는 에러가 발생한다
myMutableList = mutableListOf(1, 2, 3, 4, 5, 6) // error 발생

 

참고 자료

https://hyperskill.org/learn/step/4371

 

Values and variables – JetBrains Academy — Learn programming by building your own apps

What is a variable? A variable is a storage for a value, which can be a string, a number, or something else. Every variable has a name (or an identifier) to distinguish it from other variables. You can access a value by the name of the variable. Variables

hyperskill.org