밤빵's 개발일지
[TIL]20241017 const 본문
코틀린을 공부하면서, 변수 선언과 상수 선언에 대한 개념을 이해하는 것은 중요하다. 특히 상수는 변하지 않는 값을 저장할 때 사용하는데, 이를 위해 const 키워드를 사용할 수 있다. 언제 const 키워드를 사용하는 것이 적절할까?
▶const란?
코틀린에서 const는 "변하지 않는 상수"를 의미한다. const로 선언된 값은 컴파일 시점에 결정되며, 프로그램이 실행되는 동안에는 절대로 값이 변경되지 않는다. 즉, const는 컴파일 타임 상수로, 런타임에 변경되지 않는 값을 미리 선언할 때 유용하다.
const로 선언된 상수는 다음과 같은 특징이 있다.
- 초기화는 반드시 상수 표현식으로 해야 한다: 예를 들어, const로 선언할 값은 문자열 리터럴, 숫자, 또는 컴파일 타임에 결정될 수 있는 값이어야 한다.
- 최상위 레벨 또는 객체 내에서만 사용 가능: const는 함수나 클래스 내부에서 사용할 수 없고, 최상위 레벨 또는 객체의 멤버로만 선언할 수 있다.
▶ val과 const의 차이
코틀린에서는 불변 변수를 선언할 때 val을 사용한다. 하지만 const와 val에는 중요한 차이점이 있다.
- val: 실행 시점에 값이 할당되며, 런타임에서 그 값이 변경될 수 없다. 그러나 할당되는 값 자체는 런타임에 계산될 수 있다.
- const: 컴파일 시점에 값이 결정되며, 실행 중에는 절대로 값이 변경되지 않는다. 따라서 const는 컴파일 타임 상수이며, val은 런타임 상수라고 볼 수 있다.
▶ const 키워드 사용 예시
const val PI = 3.14159
const val MAX_USER_COUNT = 100
→ PI와 MAX_USER_COUNT는 프로그램이 실행되는 동안 변하지 않는 상수로 선언되었고, PI는 원주율을 나타내는 상수로, MAX_USER_COUNT는 특정 프로그램에서 허용하는 최대 사용자 수를 나타내는 상수로 사용할 수 있다.
▶ const를 사용할 수 있는 위치
▷최상위 레벨에서 선언된 상수
const val APP_NAME = "MyApp"
const val VERSION = "1.0.0"
▷객체(Object)에서 선언된 상수
object Config {
const val API_URL = "https://api.myapp.com"
const val TIMEOUT = 5000
}
→ 이처럼 const 키워드는 최상위 레벨이나 객체에서만 사용할 수 있으며, 클래스 내부나 함수 내부에서는 사용할 수 없다. 대신, 클래스 내부에서는 val을 사용하여 불변 변수를 선언해야 한다.
▶ const 사용에 적합한 상황
▷애플리케이션 구성 정보:
- 애플리케이션의 이름, 버전, URL과 같은 고정된 정보를 선언할 때 const 키워드를 사용하여 상수를 정의할 수 있다.
- 예를 들어, 특정 API의 URL을 상수로 선언하면, 여러 클래스에서 이 URL을 사용하더라도 중앙에서 한 번만 선언하고 관리할 수 있다.
▷수학적 상수:
- 원주율 PI와 같이 변하지 않는 수학적 상수를 선언할 때 const를 사용할 수 있다. 이러한 값들은 런타임에 계산할 필요가 없으므로 컴파일 시점에 미리 결정하여 상수로 저장하는 것이 효율적이다.
▷타임아웃, 제한값 설정:
- 네트워크 요청의 타임아웃 값, 애플리케이션의 최대 사용자 수 등의 제한값을 const로 선언하여 고정된 값을 사용할 수 있다.
▶const와 관련된 주의사항
▷상수 표현식만 사용 가능: const로 선언된 값은 반드시 상수 표현식이어야 한다. 예를 들어, 다음과 같이 선언하면 컴파일 오류가 발생한다.
// 컴파일 오류 발생
const val currentDate = LocalDate.now() // 현재 날짜는 런타임 값이므로 상수로 선언 불가
▷함수 내부에서 사용할 수 없음: const는 클래스의 멤버 변수나 함수 내부에서 사용할 수 없으므로, 해당 위치에서는 대신 val을 사용해야 한다.
fun example() {
// const val cannot be used here
val localConstant = 10
}
const는 컴파일 타임에 결정되는 상수를 선언할 때 매우 유용하고, 특히 애플리케이션 구성 정보, 수학적 상수, 제한값 설정 등에서 자주 사용된다. 이와 달리, val은 런타임에 값이 할당되는 불변 변수로, const와 구별하여 적절히 사용해야 한다. 코틀린에서 상수의 의미와 사용법을 잘 이해하면, 더 효율적인 코드를 작성할 수 있다.
'Kotlin' 카테고리의 다른 글
[TIL]20241019 비트연산자 (0) | 2024.10.19 |
---|---|
[TIL]20241018 const 와 val의 차이 (0) | 2024.10.19 |
[TIL]20241016 정규표현식(Regex) (0) | 2024.10.16 |
[TIL]20241015 if-else 표현식 (0) | 2024.10.15 |
[TIL]20241014 is & as 연산자 (0) | 2024.10.14 |