текст перекладу
Статичний контроль потоку | Частина-10 | Основи Java: ООП (Об'єктно-орієнтоване програмування) | автор: Sahil Hamirani
- Кожного разу, коли ми виконуємо клас Java, наступна послідовність кроків буде виконуватися як частина статичного потоку контролю.
- Ідентифікація статичних членів згорі до низу. [1 до 6]
- Виконання присвоєнь статичних змінних і статичних блоків згорі до низу. [7 до 12]
- Виконання методу main. [13 до 15]
Приклад:
Приклад статичного контролю потоку | автор: Sahil Hamirani
Нижче наведено код для вашого посилання та копіювання:
class Base {
static int i = 10;
static {
m1();
print("First Static Block");
}
public static void main(String[] args) {
m1();
print("Main Method");
}
public static void m1() {
print(j);
}
static {
print("Second Static Block");
}
static int j = 20;
}
Що таке Пряме Читання:
Якщо ми в статичному блоці намагаємося прочитати змінну, то ця операція читання називається Прямим Читанням.
Що таке Непряме Читання:
Якщо ми викликаємо метод, і всередині цього методу намагаємось прочитати змінну, то ця операція читання називається Непрямим Читанням.
Приклад:
class Test
{
static int i = 10;
static
{
m1();
System.out.println(i); // Пряме Читання
}
public static void m1()
{
System.out.println(i); // Непряме Читання
}
}
- Якщо змінна просто ідентифікована JVM, але її початкове значення ще не присвоєно, то змінна знаходиться в стані Read Indirectly and Write Only[RIWO].
- Якщо змінна знаходиться в стані RIWO, ми не можемо виконати Пряме Читання. Але можемо виконати Непряме Читання.
- Якщо ми намагаємось здійснити пряме читання, то отримаємо Помилку компіляції: незаконне переднє посилання.
Приклад 1:
class Test
{
static int x = 10;
static
{
System.out.println(x);
}
}
Виведення:
10
Помилка виконання: NoSuchMethodError: main
Приклад 2:
class Test
{
static
{
System.out.println(x);
}
static int x = 10;
}
Виведення:
Помилка компіляції: незаконне переднє посилання
Приклад 3:
class Test
{
static
{
m1();
}
public static void m1()
{
System.out.println(x);
}
static int x = 10;
}
Виведення:
0
Помилка виконання: NoSuchMethodError: main
Перекладено з: Static Control Flow | Part-10 | Core Java: OOPs(Object Oriented Programming)