Синтаксис Java ·
‹ Предыдущий Следующий ›
⏱ 5 минут чтения Обновлено: 2026-07-04

Объявление, инициализация и область видимости переменных

В этой статье мы поговорим с Вами более детально о переменных в языке Java.

1. Объявление переменных в Java и их инициализация

Java переменные - это основной элемент хранения информации в Java-программе. 

Прежде чем использовать переменную, её необходимо объявить. Мы пишем её тип и имя переменной с помощью какого-то идентификатора, например:

int max;// Объявляет число max

Здесь мы просто объявили переменную max, и сейчас её значение равно значению по умолчанию. Для int - это ноль. Чуть позже в программе переменную можно проинициализировать:

max = 89;// Инициализирует число max

Но, конечно же, это лучше делать не следующей строчкой.

Если нам требуется объявить несколько переменных заданного типа, это можно сделать в виде разделённого запятыми списка имён переменных:

int count = 0, min = 6;// Объявляет два целых числа count и min

Переменная может быть инициализирована при объявлении: 

double d = 2.3;// Объявляет число d и инициализирует его

Инициализирующее выражение, то есть, то что мы пишем после равно, должно возвращать значение того же самого или совместимого типа, что и у объявленной нами переменной. Что такое совместимый тип мы узнаем в одном из наших следующих уроков - Преобразование и приведение примитивных типов.

Java - строго типизированный язык, то есть каждая переменная Java имеет какой-то конкретный тип. Тип переменной определяет:

  • размер и размещение её в памяти,
  • диапазон значений, которые могут храниться в памяти,
  • набор операций, которые могут быть применены к переменной.

Если мы объявили переменную с таким-то типом, то тип переменной мы поменять не можем.

Конечно же во время выполнения программы значение переменной может изменяться. Допустим мы установили значение 8 в переменную max, а потом где-то дальше в программе мы её изменили:

int max = 8;
...
max = 89;

2. Область видимости переменной в Java

В Java допускается объявление переменных в любом блоке кода. Блок кода заключается в фигурные скобки, задавая тем самым область видимости или действия. Таким образом, при открытии каждого нового блока кода создается новая область видимости. 

  • Две основные области видимости в Java определяются классом и методом, хотя такое их разделение несколько искусственно.
  • В языке Java видимость переменных, определяемая методом, начинается с его открывающей фигурной скобки. Если у метода имеются параметры, то они также включаются в область видимости метода и действуют точно так же, как и любая другая переменная в методе.
  • Переменные, объявленные в области видимости, не доступны из кода за пределами этой области.
  • Области видимости могут быть вложенными. 
  • Переменные создаются при входе в их область действия и уничтожаются при выходе из нее.
  • Во внутреннем блоке кода нельзя объявлять переменные с тем же именем, что и во внешней области действия.

Рассмотрим области действия переменных на следующем примере:

public class VarExample {
    String str1 = "Hello!"; // переменные str1 и str2 объявлены в классе. То есть область их действия - это класс.
    String str2 = "Hi!";

    public static void main(String[] args) {
        int x; // переменная x доступна всему коду из метода main ( )
        x = 10;
        if (x == 10) { // начало новой области действия,
            int y = 20;
            //int x = 45; // ОШИБКА! Во внутреннем блоке кода нельзя
            // объявлять переменные с тем же именем, что и во внешней области действия.
            //обе переменные x и y доступны в этой области действия
            System.out.println(" x и y : " + x + " " + y);
            x = y * 2;
        }
        // y = 100; // ОШИБКА! переменная y недоступна
        // в этой области действия
        // переменная x доступна и здесь
        System.out.println(" x равно " + x);
    }
}

3. Объявление локальных переменных с помощью var

В Java 10 появилась возможность объявлять локальные переменные с помощью ключевого слова Java var без указания типа. Тип выводится компилятором из присваиваемого значения:

public class VarExample2 {
    public static void main(String[] args) {
        var i = 6;
        var d = 7.8;
        var s = "some String";
        System.out.println(i);
        System.out.println(d);
        System.out.println(s);
    }
}

Конечно же, у такого типа объявления есть свои достоинства и недостатки.

Достоинство - это то, что Вам не нужно задумываться о том, какого типа будет ваша переменная. Но с другой стороны тип переменной помогает понять какое значение хранится в этой переменной. Поэтому если вы используете var, то лучше использовать более понятные идентификаторы. То есть переменные i, d и s в таком случае будут не очень корректные. 

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

Что такое область видимости переменной?

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

Можно ли использовать var для полей класса?

Нет. Ключевое слово var работает только для локальных переменных — тех, что объявлены внутри метода. Его нельзя использовать для полей класса, параметров метода или возвращаемого типа. Компилятор выводит тип из значения, которым переменная инициализируется, поэтому var обязательно требует инициализации в момент объявления.

Можно ли во вложенном блоке объявить переменную с тем же именем, что и во внешнем?

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

Какое значение у переменной, если её не инициализировать?

У полей класса, которые не инициализированы явно, есть значение по умолчанию: для числовых типов это 0, для booleanfalse, для ссылочных типов — null. А вот локальные переменные внутри метода значения по умолчанию не получают: использовать их до инициализации нельзя, компилятор выдаст ошибку.

Презентацию с видео можно скачать на Patreon.

Видео объяснение

Предпочитаете видеоформат? Посмотрите этот урок с примерами и объяснениями.

Комментарии

Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.