Назад Зміст Вперед

Блоки

Поняття блоку

Блок - це група операторів між збалансованими дужками.
Можна в оголошенні класу поміщати так звані блоки ініціалізації. Блок ініціалізації буде виконуватися при створенні об'єкта. Він розташовується між фігурними дужками, наприклад клас з блоком ініціалізації.public class MyString {
    static int numbers = 0;
    String NameString;
    { // Блок ініціалізації
        NameString = "String " + String.valueOf(++numbers);
    }

}
Існують також блоки статичної ініціалізації, що відрізняються від блоків ініціалізації тим, що перед відкривається фігурною дужкою стоїть модифікатор static (статична ініціалізація передбачає звернення тільки до статичних елементів цього класу).

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

Кожна змінна в Java має область видимості, або характеристики, що визначають, де ви можете звернутися до цієї змінної тільки по її імені. Якщо змінна знаходиться в області видимості, ви можете взаємодіяти з нею по її імені. В іншому випадку — ні.

Код може також посилатися на змінну, оголошену в ширшій області видимості, ніж поточне положення в коді. 

Затінення (Shadowing)

Перекриття областей видимості при якому виникає конфлікт імен різних конструкцій мови називають затіненням.
Виправити це можна за допомогою ключового слова this або інших конструкцій мови залежно від обставин. Компілятор  про такі ситуації не повідомляє, оскільки затінення є загальним джерелом помилок, бажано зробити все, щоб уникнути його використання.

Приклад затінення
public class Shadowing {
    int x = 5;
    
public void printField() {
        int x = 10;
        System.out.println(this.x); //виведе 5
    }
   
public void printLocalVariable() {
        int x = 10;
        System.out.println(x);  //виведе 10
    }
}
.