Kotlin – 5 – Constants in Kotlin

In Kotlin, constants are values that do not change throughout the execution of a program. They provide a way to define fixed and unmodifiable data, often used for configuration values, mathematical constants, or any value that should remain constant during the program’s lifetime. In this guide, we’ll explore how to declare and use constants in Kotlin.

Declaring Constants

Kotlin provides two ways to declare constants:

1. const Keyword (Compile-Time Constants)

Kotlin allows you to declare compile-time constants using the const keyword. These constants are evaluated at compile time, and their values are replaced directly in the compiled bytecode. To declare a const constant, it must meet the following criteria:

  • Be a top-level or member of an object declaration.
  • Be of type String or a primitive data type.
  • Be initialized with a value that can be computed at compile time.

Here’s an example of a compile-time constant:

const val PI = 3.14159
const val GREETING = "Hello, Kotlin!"

In this example, PI and GREETING are declared as compile-time constants, and their values are known at compile time.

2. val with Immutable Reference (Run-Time Constants)

For values that cannot be computed at compile time or are not primitive data types, you can use the val keyword with an immutable reference to create run-time constants. These constants are evaluated at runtime but cannot be modified once assigned. They provide a way to create constants for complex objects or values that depend on runtime conditions.

val MAX_SCORE: Int = calculateMaxScore()

In the example above, MAX_SCORE is a run-time constant initialized with the result of the calculateMaxScore() function. While the value is determined at runtime, it remains constant once assigned.

Usage of Constants

Constants are useful for various scenarios in your Kotlin programs:

1. Mathematical Constants

You can use constants to represent mathematical constants, such as π (pi) or the speed of light:

const val PI = 3.14159
const val SPEED_OF_LIGHT = 299792458
2. Configuration Values

Constants are often used for configuration values that should remain constant throughout the execution of a program. For example, database connection details, API keys, or application settings:

const val DATABASE_URL = "jdbc:mysql://localhost/mydb"
const val API_KEY = "your-api-key"
const val DEBUG_MODE = true
3. Enumerations

Constants can be part of enum classes, allowing you to define a set of constant values for specific use cases:

enum class Color {
    RED, GREEN, BLUE
}

In this example, Color.RED, Color.GREEN, and Color.BLUE are constants of the Color enum type.

4. Default Values

You can use constants to define default values for function parameters or properties:

fun sendMessage(message: String, urgency: Int = DEFAULT_URGENCY) {
    // ...
}

const val DEFAULT_URGENCY = 1

Here, DEFAULT_URGENCY serves as the default value for the urgency parameter.

Command and Example

Here’s an example demonstrating the use of constants in Kotlin:

fun main() {
println(“Value of PI: $PI”)
println(“Greeting: $GREETING”)
println(“Max Score: $MAX_SCORE”)

val color = Color.RED
println(“Selected color: $color”)

val message = “Important message”
sendMessage(message)
}

const val PI = 3.14159
const val GREETING = “Hello, Kotlin!”
val MAX_SCORE: Int = calculateMaxScore()

enum class Color {
RED, GREEN, BLUE
}

fun calculateMaxScore(): Int {
return 100
}

fun sendMessage(message: String, urgency: Int = DEFAULT_URGENCY) {
println(“Sending message: $message (Urgency: $urgency)”)
}

const val DEFAULT_URGENCY = 1

In this example, we declare both compile-time (PI and GREETING) and run-time (MAX_SCORE) constants. We also use an enum constant (Color.RED) and define a default value for the urgency parameter using the constant DEFAULT_URGENCY.

Understanding and effectively using constants in Kotlin helps improve code readability, maintainability, and ensures that important values remain unchanged during program execution. Whether you’re defining mathematical constants, configuration settings, or default values, constants are a valuable tool in your Kotlin programming toolkit.