Uknow's Lab.
article thumbnail

 

 

1. 상수 (Constant)

상수(Constant)란 변하지 않는 수를 뜻합니다.

이는 변하눈 수인 변수(variable)과 반대되는 의미입니다.

 

사실 객체지향과는 큰 연관이 없어 1부에서 다루려고 했는데,

클래스, 객체, 커스텀 getter 등 1부에서 다루지 않은 내용이 많이 튀어나와 2부에서 다루기로 했습니다...

 

 

2. 상수의 사용

<kotlin />
const val MAX_VALUE = 1000000000 fun main() { MAX_VALUE = 45643453 // 변경 불가! }

상수는 constant의 줄임말인 const에 val을 붙여 사용할 수 있으며,

한 번 초기화하면 절대 값을 바꿀 수 없습니다.

 

앞의 내용을 잘 따라오신 분들이라면, 한 가지 의문이 드실 수 있습니다.

 

엥? 굳이 const 안써도 그냥 val 쓰면 값 못바꾸지 않아요?

 

 

3. const val vs val

간단하게 설명하자면,

val런타임 시점에 값이 할당되며,

const val컴파일 시점에 값이 할당됩니다.

 

<kotlin />
const val MAX = 1000000000 const val STRING = "Hello World" const val CHAR = 'A' const val CHECK = true const val sb = StringBuilder() // 에러발생! Primmitive type이 아니면 값 할당이 불가! class Test { const val NUM = 10000 // 에러발생 !! const는 클래스나 메소드 안에서는 생성할 수 없다 }

 

const val은 숫자형, 문자열, true / false 등 primmitive 타입만 할당이 가능합니다.

또, 클래스 내부에서는 선언이 불가능해요.

 

 

<kotlin />
val INT = 1000000000 get() { return field + 1000 } const val INT2 = 1000000000 { get() { // 커스텀 getter가 불가능하다 return field + 1000 } }

 

일반적인 프로퍼티는 커스텀 getter를 사용하는 것이 가능합니다.

다만, const val의 경우 커스텀 getter가 불가능하기에, 더 강한 불변성을 제공합니다.

 

 

<kotlin />
class Test { companion object { const val MAX = 1000000000 } }

 

클래스 안에서 const val을 사용하려면

코틀린의 static에 해당되는 companion object 안에서 상수 선언이 가능합니다.

자바의 static final에 대응된다 볼 수있습니다.

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.