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

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

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

Это означает, что в другом методе можно объявить переменную с точно таким же име-нем без какого-либо конфликта.

Давайте мы с вами создадим программу постепенно, где увидите что и как используется:

1. Создайте новую программу с именем Scope, содержащую стандартный метод main.

class Scope {
    public static void main(String[] args) { }
}

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

String txt = "    main";
System.out.println(txt);

3. После главного метода перед последней фигурной скобкой класса добавьте еще один метод с именем sub.

public static void sub() { }

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

String txt = "    sub";
System.out.println(txt);

5. Добавьте вызов метода sub в конец метода main.

sub();

6. Сохраните программу под именем Scope.java, затем скомпилируй-те и запустите. Код должен выглядеть так:

class Scope {
    public static void main(String[] args) {
        String txt = "    main";
        System.out.println(txt);
        sub();
    }

    public static void sub() {
        String txt = "    sub";
        System.out.println(txt);
    }
}

После компиляции получаем:

Область видимости переменной в JavaКлючевое слово static, которое используется в объявлениях метода, указывает, что данный метод является «методом класса» - он доступен из любого другого метода данного класса.

Аналогично, при помощи ключевого слова static может быть объявлена «переменная класса», которая доступна глобально для всего класса. Объявление этой переменной должно быть выполнено перед объявлением главного метода сразу после фигурных скобок, следующих за
объявлением класса.

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

7. Отредактируйте код в вашем файле Scope.java, добавив глобальную переменную класса с тем же именем, что и локальная переменная метода.

final static String txt = "    Scope";

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

System.out.println(Scope.txt);

9. Закомментируйте строку, которая объявляет локальную переменную в методе sub - таким образом, оператор вывода будет теперь обращаться к глобальной переменной с тем же именем.

//String txt = "    sub";

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

Код программы будет следующим:

class Scope {

    final static String txt = "    Scope";

    public static void main(String[] args) {
        String txt = "    main";
        System.out.println(txt);
        sub();
        System.out.println(Scope.txt);
    }

    public static void sub() {
        // String txt = "    sub";
        System.out.println(txt);
    }
}

После компиляции получим следующее:

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

Полезные советы из практики:

  • По возможности используйте локальные переменные метода, чтобы избегать конфликтов. Глобальные переменные класса используются в основном для констант.
  • Переменная-счетчик, объявленная в цикле for, недоступна снаружи цикла - ее область видимости ограничена блоком операторов цикла.

Интересное видео для читателей:

Комментариев 3 на “Область видимости переменной в Java

  1. А почему этот код не компилится. Вроде второй х должен перекрыть первый?
    public static void main(String [] args){
    int x = 2;
    if(true){
    int x = 3
    }
    }

    • Вы пропустили точку с запятой.
      Советую в дальнейшем постить и вывод компилятора.

    • Сначала вы объявили переменную x и задали ей значение.
      Второй раз уже не нужно обїявлять ту же переменную, компилятор відаст ошибку. Ві можете только переопределить значение. То есть тип int нужно убрать в условии.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *