Чем отличается const val от val
В Kotlin ключевое слово const
используется для создания констант времени компиляции, в то время как ключевое слово val
используется для создания неизменяемых (immutable) переменных времени выполнения.
Вот основные различия между const val
и val
:
const val
: Константы времени компиляции должны быть инициализированы значением, известным во время компиляции. Они могут быть инициализированы только примитивными типами данных или строковыми литералами, которые можно вычислить во время компиляции.val
: Переменные времени выполнения могут быть инициализированы любым значением, известным во время выполнения программы.const val
: Константы времени компиляции могут быть инициализированы только в верхнем уровне файла или внутри объектов (object). Они не могут быть инициализированы внутри функций или в качестве членов класса.val
: Переменные времени выполнения могут быть инициализированы в любом месте, где допустимо объявление переменной.const val
: Константы времени компиляции могут использоваться в выражениях, где требуются константы времени компиляции, например, при определении значений аннотаций.val
: Переменные времени выполнения могут использоваться в любом месте, где допустимо использование переменных.const val
: Значения констант времени компиляции встраиваются в байткод в места использования, поэтому они доступны во время выполнения программы только через их использование в других константных выражениях.val
: Переменные времени выполнения сохраняют свои значения в памяти во время выполнения программы и могут быть изменены только один раз после инициализации.const val PI = 3.14159 // Константа времени компиляции
fun main() {
val radius = 5 // Переменная времени выполнения
val area = PI * radius * radius // Использование константы времени компиляции
println("Площадь круга: $area")
}