0Pricing
Kotlin Academy · Урок

val и var: неизменяемость с самого начала

Разберитесь в различиях между val и var и поймите, почему неизменяемость важна

«val и var: неизменяемость с самого начала» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.

Два способа объявить переменную

В Kotlin есть два ключевых слова для объявления переменных: val — для доступных только для чтения (неизменяемых) ссылок, а var — для изменяемых. Правильный выбор важен.

val: ссылка только для чтения

val объявляет ссылку, которой нельзя присвоить новое значение после инициализации. Представьте её как final в Java.
val name = "Kotlin"
println(name)
// name = "Java" // Error: Val cannot be reassigned

var: изменяемая ссылка

var объявляет переменную, которой можно присвоить новое значение. Используйте var только тогда, когда Вам действительно нужно изменять значение.
var counter = 0
counter = 1
counter += 1
println(counter) // 2

Вывод типа

Kotlin выводит тип из начального значения. Вы также можете явно записать тип после двоеточия.
val age = 25          // inferred: Int
val name: String = "Ana"  // explicit type
var score: Double = 0.0

val не означает неизменяемый объект

val запрещает переназначить ссылку, но сам объект всё ещё может быть изменяемым. В MutableList, объявленный с помощью val, по-прежнему можно добавлять элементы.
val list = mutableListOf(1, 2, 3)
list.add(4)        // OK! list is val but mutable
// list = mutableListOf() // Error: reassignment

По умолчанию выбирайте val

Руководства по стилю Kotlin рекомендуют по умолчанию использовать val. Это делает код безопаснее и упрощает его понимание. Переходите на var только при необходимости изменения значения.
val pi = 3.14159     // constant value
val greeting = "Hi"  // never changes
var retries = 3      // will be decremented

val и const val

const val используется для констант времени компиляции (примитивов и String на верхнем уровне либо внутри object/companion). val — это константа времени выполнения.
const val MAX_SIZE = 100    // compile-time
val instance = MyClass()    // runtime

Неинициализированная var

Можно объявить var без инициализации, но Вы MUST указать тип и присвоить значение до использования. val всегда должна быть инициализирована.
var result: String
result = "computed"
println(result)

Область видимости и затенение

Область видимости переменных ограничена их блоком. Вложенные области могут затенять внешние переменные, но это может запутать читателя, поэтому используйте понятные имена.
val x = 10
run {
    val x = 20  // shadows outer x
    println(x)  // 20
}
println(x)      // 10

Соглашения об именовании

В Kotlin для переменных и функций используется camelCase. Константы (const val) записываются в формате UPPER_SNAKE_CASE. Для классов используется PascalCase.
val firstName = "Jane"     // camelCase
const val MAX_ITEMS = 50   // UPPER_SNAKE_CASE
class UserProfile           // PascalCase

Почему важна неизменяемость

Неизменяемые данные по умолчанию безопасны в многопоточном коде, их проще тестировать, и они уменьшают количество ошибок из-за неожиданных изменений. Всегда спрашивайте себя: нужно ли мне изменять это значение?

Быстрая проверка

Какое ключевое слово объявляет ссылку только для чтения (которой нельзя присвоить новое значение) в Kotlin?

Итоги

val = ссылка только для чтения, var = изменяемая ссылка. Предпочитайте val. Вывод типов позволяет не указывать типы явно. Далее: встроенные типы Kotlin!

Часто задаваемые вопросы

Урок «val и var: неизменяемость с самого начала» бесплатный?

Да — полный текст урока «val и var: неизменяемость с самого начала» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.

Чему я научусь в уроке «val и var: неизменяемость с самого начала»?

Разберитесь в различиях между val и var и поймите, почему неизменяемость важна Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Kotlin Academy?

Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «val и var: неизменяемость с самого начала»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Kotlin Academy?

Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Настройка Kotlin: REPL, IntelliJ и онлайн-песочница
  2. val и var: неизменяемость с самого начала
  3. Базовые типы Kotlin: Int, Double, Boolean, Char
  4. Ваша первая программа на Kotlin: main, println и ввод
← Назад к Kotlin Academy