Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

밤빵's 개발일지

[TIL]20241017 const 본문

Kotlin

[TIL]20241017 const

최밤빵 2024. 10. 17. 22:57

코틀린을 공부하면서, 변수 선언과 상수 선언에 대한 개념을 이해하는 것은 중요하다. 특히 상수는 변하지 않는 값을 저장할 때 사용하는데, 이를 위해 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