Переменные и Константы в Java

Переменные в Java — понятие, типы, область видимости и константы

Всем привет! С вами Виталий Лесных. В этом уроке разберём, что такое переменные в Java, зачем они нужны, какие бывают типы, как объявлять и инициализировать, что такое динамическая инициализация, область действия (scope), время жизни и константы.

Что такое переменная

Переменная — это именованная ячейка памяти, в которой можно хранить значение и затем с ним работать. Переменные нужны, чтобы программа могла хранить данные и манипулировать ими.

Синтаксис объявления переменной

Общее: <тип> <имя>;


// объявление
int a;

// объявление + инициализация
int b = 5;
  

Правила именования переменных

  • Имя не должно начинаться с цифры (1var — ошибка).
  • Нельзя использовать зарезервированные слова (например, if, while, int, break и т.д.).
  • Можно использовать буквы, цифры (не в начале), символы _ и $, но привычный стиль — camelCase.
  • Регистр имеет значение: myVar и myvar — разные переменные.

Примеры корректных имён


int age;
double accountBalance;
String userName;
int _temp;
int $price; // допустимо, но необычно
  

Основные типы данных (кратко)

Примитивные типы — наиболее часто используемые:

  • boolean — логическое значение: true или false.
  • byte — 8 бит, диапазон от -128 до 127.
  • short — 16 бит.
  • int — 32 бита, самый распространённый целочисленный тип.
  • long — 64 бита, для больших целых чисел (пишут с суффиксом L при инициализации).
  • float — 32-битное число с плавающей точкой (суффикс f при инициализации).
  • double — 64-битное число с плавающей точкой, чаще используется для дробей.
  • char — символ (2 байта, Unicode).

Код — примеры типов


boolean flag = true;
byte b = 127;
short s = 32000;
int i = 1_000_000;
long l = 12345678900L;
float f = 3.14f;
double d = 3.1415926535;
char ch = 'A';
  

Объявление vs Инициализация

Объявление резервирует имя и тип. Инициализация присваивает значение.


// объявление
int x;

// инициализация (присваивание)
x = 10;

// объявление + инициализация
int y = 2;
  

Динамическая инициализация

Переменная может получать значение, вычисленное в момент выполнения:


int a = 1, b = 2, c = 3;
int volume = a * b * c; // динамическая инициализация: вычисляем на основе других переменных
System.out.println("Volume = " + volume); // выведет 6
  

Область видимости (scope) и время жизни

Область видимости переменной определяется фигурными скобками { ... }. Переменная доступна только внутри того блока, где она объявлена. Когда выполнение покидает блок — переменная «уничтожается» (в смысле недоступности).

Пример: вложенные области


int a = 1;
if (a == 1) {
    int b = 2; // b доступна только внутри этого блока
    System.out.println(a + b); // OK
}
// System.out.println(b); // ОШИБКА: b не видна здесь
  

Инициализация внутри блока

Если объявить переменную выше, а инициализировать внутри блока — при каждом входе в блок её значение может меняться или быть переинициализировано.


int b; // объявлена вне цикла
for (int a = 0; a < 3; a++) {
    b = 0; // инициализируем внутри цикла
    b++;
    System.out.println("a=" + a + " b=" + b); // b всегда покажет 1
}
  

Если же b инициализировать вне цикла и увеличивать внутри — она будет накапливать значение:


int b = 0;
for (int a = 0; a < 3; a++) {
    b++;
    System.out.println("a=" + a + " b=" + b); // b: 1, 2, 3
}
  

Ограничение: нельзя объявлять одинаковые имена во вложенных областях

В Java нельзя объявить переменную с тем же именем в вложенной области — это даст ошибку компиляции.

Константы

Константа — значение, которое нельзя изменить после присвоения. В Java используется ключевое слово final.


final int DAYS_IN_WEEK = 7;
System.out.println(DAYS_IN_WEEK);
// DAYS_IN_WEEK = 8; // ОШИБКА: нельзя перезаписать константу
  

Рекомендации

  • Выбирайте минимально подходящий тип (не занимайте лишнюю память без нужды).
  • Используйте понятные имена переменных (например, totalPrice вместо tp).
  • Объявляйте переменные в минимально необходимой области видимости.
  • Константы — в верхнем регистре с подчёркиваниями: MAX_USERS.

Домашнее задание

Проверьте себя — выполните задачи:

  1. Объявите переменные всех примитивных типов в Java и выведите их значения в консоль (для long и float используйте суффиксы L и f соответственно).
  2. Напишите программу, которая вычисляет объём параллелепипеда: ввод сторон a, b, c (как int) и выводит volume (динамическая инициализация).
  3. Покажите пример, где переменная объявлена вне блока, а инициализируется внутрь — продемонстрируйте разницу в поведении при инициализации внутри и снаружи цикла.
  4. Создайте константу для максимального количества попыток (final int MAX_ATTEMPTS = 3;) и используйте её в условии (например, счётчик попыток).
  5. Попробуйте объявить переменную с именем зарезервированного слова (например, int if = 5;) — посмотрите, какую ошибку выдаст компилятор, и запишите пояснение в комментариях к коду.

Совет: размещайте переменные как можно ближе к месту их использования — так код будет более читабельным и безопасным.

Удачи в практике!

Тест — Насколько ты понял урок?


Всего лайков: 0
Мой канал в социальных сетях
Отправляя email, вы принимаете условия политики конфиденциальности

Полезные статьи:

Арифметические операторы
В этом уроке речь пойдет про арифметические операции и операторы. В программировании операторы — это команды, выполняющие определённые действия: математические, строковые, логические или операции срав...
Побитовые операторы в Java
Побитовые операторы в Java В языке программирования Java определено несколько побитовых операторов. Эти операторы применяются к целочисленным типам данных, таким как byte, short, int, long и char. Спи...
Циклы в Java: for, while, do while, Операторы continue и break
Привет! С вами Виталий Лесных. Сегодня мы продолжим курс «Основы Java для начинающих» и разберём одну из важнейших тем программирования — циклы. Цикл — это повторение выполнения кода до тех пор, пок...

Новые статьи:

Java под микроскопом: стек, куча и GC на примере кода
Схема - Java Memory Model - Heap / Non-Heap / Stack Heap (память для объектов) Создаёт объекты через new. Young Generation: Eden + Survivor. Old Generation: объекты, пережившие несколько сборок G...
Как удержать легаси-проект от смерти и подарить ему ещё 10 лет
Признаки легаси-проекта: как распознать старый корабль Легаси — это не просто старый код. Это живой организм, который пережил десятки изменений, смену команд, устаревшие технологии и множество временн...
Асинхронность и реактивность в Java: CompletableFuture, Flow и Virtual Threads
В современном Java-разработке есть три основных подхода к асинхронности и параллельности: CompletableFuture — для одиночных асинхронных задач. Flow / Reactive Streams — для потоков данных с контролем...
Fullscreen image