Объявление и инициализация переменных
Коротко: Объявить — значит дать переменной имя и тип, чтобы программа зарезервировала для неё память. Инициализировать — значит присвоить ей первое значение. Оба действия можно выполнить вместе в одной строке.
Подробнее: Компьютер должен заранее знать, сколько памяти нужно переменной и что она может содержать. Это происходит при объявлении. После этого она должна получить допустимое начальное значение, иначе она содержит случайный мусор или null.
Подробности
Объявление, инициализация, присваивание:
int age; // объявление: тип и имя
age = 17; // инициализация: первое значение
int height = 180; // оба действия в одной строке
age = 18; // последующее присваивание (изменение значения)| Шаг | Значение | Эффект |
|---|---|---|
| Объявить | Сообщить имя и тип | Память резервируется |
| Инициализировать | Присвоить первое значение | Переменную можно использовать |
| Присвоить | Изменить значение позже | Старое значение перезаписывается |
В разных языках:
| Язык | Пример |
|---|---|
| Java, C, C# | int x = 5; (тип указывается) |
| Python | x = 5 (тип выводится, объявление не нужно) |
| JavaScript | let x = 5;, const PI = 3.14;, раньше var |
| TypeScript | let x: number = 5; |
| Kotlin | val x = 5 (неизменяемая), var y = 3 |
| Go | x := 5 или var x int = 5 |
Важные правила:
- Локальные переменные в Java должны иметь значение до чтения (иначе ошибка компилятора). Атрибуты получают значения по умолчанию (0,
false,null). - C/C++: неинициализированные локальные переменные содержат мусор — частая ошибка и риск безопасности. Всегда инициализируйте.
const/final: значение можно задать только один раз.- Видимость (scope): переменная действует только в блоке, где она объявлена.
- Имена: осмысленные (
customerCountвместоa), camelCase в Java, snake_case в Python. - Несколько в одной строке:
int a = 1, b = 2;(только когда понятно). - Объявление функций: в C объявление (прототип) и определение (тело) разделяют.
Ошибки: использование переменной до её объявления («cannot find symbol», «is not defined»). Двойное объявление в одной области видимости.
См. также: Инициализировать, Несколько переменных, Переменные