Переменные в Java

Разберём, как объявлять переменные в Java, какие бывают области видимости, что такое константы и как Java выводит тип через var.

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

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

Объявление переменной в Java состоит из типа, имени и, по желанию, начального значения:

int age = 25;          // объявление + инициализация сразу
String city;            // только объявление
city = "Казань";       // инициализация позже

System.out.println(age);
System.out.println(city);

Вывод:

25
Казань

Локальную переменную нельзя использовать, пока ей не присвоено значение. Компилятор не пропустит чтение неинициализированной переменной — это защищает от случайных ошибок.

Правила именования

  • Имя состоит из букв, цифр, _ и $, но не может начинаться с цифры.
  • Java чувствительна к регистру: count и Count — разные переменные.
  • По соглашению имена переменных пишут в стиле camelCase: userName, totalPrice.
  • Нельзя использовать зарезервированные слова (int, class, new и т. д.).
int totalScore = 0;     // хорошо: понятное имя в camelCase
int t = 0;              // плохо: ничего не говорит о смысле
int 2cool = 0;          // ошибка: имя начинается с цифры

Константы: final

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

final double PI = 3.14159;
final int MAX_USERS = 100;

System.out.println(PI);
// PI = 3.14;   // ← такая строка не скомпилируется

Вывод:

3.14159

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

Переменная «живёт» внутри блока { }, где она объявлена, и недоступна снаружи. Это называют областью видимости (scope).

public class Main {
    public static void main(String[] args) {
        int x = 10;             // видна во всём методе main

        if (x > 5) {
            int y = 20;         // видна только внутри if
            System.out.println(x + y);
        }

        // System.out.println(y);  // ошибка: y здесь уже не существует
    }
}

Вывод:

30

Вывод типа через var

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

var name = "Анна";        // тип String
var year = 2024;          // тип int
var ratio = 0.75;         // тип double

System.out.println(name + ", " + year);

Вывод:

Анна, 2024

var работает только для локальных переменных с инициализацией. Для полей класса, параметров методов и без начального значения его использовать нельзя.

Коротко

  • Переменная = тип + имя + значение; локальную нельзя читать до инициализации.
  • Имена — в camelCase, регистр важен, зарезервированные слова запрещены.
  • final делает переменную константой.
  • Область видимости ограничена блоком { }; var выводит тип автоматически.
Проверьте себя
1. Какое ключевое слово делает переменную константой?
Aconst
Bstatic
Cfinal
Dreadonly
2. Где будет доступна переменная, объявленная внутри блока if?
AВо всей программе
BВо всём классе
CТолько внутри этого блока { }
DВ методе main и всех вложенных методах
3. Какое объявление переменной корректно?
Aint 2cool = 5;
Bint user-name = 5;
Cint totalScore = 5;
Dint class = 5;
4. Для чего можно использовать var?
AДля полей класса
BДля параметров метода
CДля объявления без значения
DДля локальной переменной с инициализацией