티스토리 뷰

반응형

var, val, const 각각은 언제 사용되는가

Kotlin 사용하고 있다면, var, val  const 키워드가 익숙할 것입니다.   가지 키워드는 Kotlin에서 변수를 선언하는 방법을 제어하는  사용됩니다. 이번 글에서는 Kotlin에서 var, val  const 사용하는 방법과 각각의 차이점에 대해 알아보겠습니다.

 

var

var 키워드는 변수를 선언하는  사용됩니다. 변수는 값을 변경할  있는 데이터를 저장하는  사용됩니다. 변수는 선언과 동시에 초기화될 필요는 없지만, 초기화되지 않은 변수는 사용하기 전에 반드시 초기화해야 합니다. 다음은 var 키워드를 사용하여 변수를 선언하는 방법의 예입니다.

 

var x = 10 x = 20

 

 

 예제에서 var 키워드를 사용하여 x 변수를 선언하고 초기값으로 10 할당합니다. 그런 다음 x 변수의 값을 20으로 변경합니다. var 선언된 변수는 언제든지 값을 변경할  있습니다.

 

val

val 키워드는 불변(immutable) 변수를 선언하는  사용됩니다. val 선언된 변수는 값을 변경할  없으며, 선언과 동시에 초기화되어야 합니다. 다음은 val 키워드를 사용하여 변수를 선언하는 방법의 예입니다.

 

val x = 10

 

 예제에서 val 키워드를 사용하여 x 변수를 선언하고 초기값으로 10 할당합니다. val 선언된 변수는 값을 변경할  없으므로, 이후에 x 변수의 값을 변경하려고 하면 컴파일 오류가 발생합니다.

 

const

const 키워드는 val 키워드와 유사하지만, 차이점이 있습니다. const 선언된 변수는 값을 변경할  없으며, 선언과 동시에 초기화되어야 합니다. 그러나 const 선언된 변수는 컴파일 타임 상수(constant) 간주되므로, 런타임  값이 변경되지 않습니다. const 전역 상수 또는 클래스 수준 상수로만 선언할  있습니다. 다음은 const 키워드를 사용하여 상수를 선언하는 방법의 예입니다.

 

const val PI = 3.14

 

 

 예제에서 const 키워드를 사용하여 PI 상수를 선언하고 초기값으로 3.14 할당합니다. const 선언된 상수는 값을 변경할 수 없습니다.

 

 

var, val, const의 차이 알아보기

앞서 설명한 var, val, const Kotlin에서 변수를 선언하는  가지 방법입니다. 다음으로, 각각의 차이점을 살펴보겠습니다.

 

var vs val

var val 가장  차이점은 변경 가능성입니다. var 선언된 변수는 값을 변경할  있지만, val 선언된 변수는 값을 변경할  없습니다. , val 선언된 변수는 불변(immutable) 변수입니다. 이러한 불변 변수는 코드의 가독성을 높이고, 디버깅을 쉽게 만들어 줍니다. 따라서, 값이 변경되지 않는 변수를 선언할 때는 val 키워드를 사용하는 것이 좋습니다.

 

var x = 10 x = 20 // OK
val y = 10 y = 20 // 컴파일 오류

 

val vs const

val const 차이점은 변수가 컴파일 타임 상수(constant)인지 아닌지입니다. val 런타임 상수(runtime constant)입니다. 이는 변수가 선언과 동시에 초기화되고, 이후에 값을 변경할  없다는 것을 의미합니다. 하지만, val 런타임 상수이므로, 변수의 초기화 값이 런타임에 결정됩니다.

const 컴파일 타임 상수입니다. , 변수가 선언될  이미 초기화되고, 이후에 값을 변경할  없습니다. const 전역 상수 또는 클래스 수준 상수로만 선언할  있습니다. const 선언된 변수는 컴파일 시점에 값을 결정하므로, 런타임에는 값이 변경되지 않습니다.

 

 

const val PI = 3.14
val x = PI * 2 // OK
PI = 3.14159 // 컴파일 오류

 

정리

Kotlin에서는 var, val, const 키워드를 사용하여 변수를 선언할  있습니다. var 변경 가능한 변수, val 불변 변수, const 컴파일 타임 상수입니다. 이러한 키워드를 올바르게 사용하여 변수를 선언하면 코드의 가독성과 안정성을 높일  있습니다.

 

 

 

반응형
댓글