Статичний контроль потоку | Частина-10 | Основи Java: ООП (Об’єктно-орієнтоване програмування)

текст перекладу

pic

Статичний контроль потоку | Частина-10 | Основи Java: ООП (Об'єктно-орієнтоване програмування) | автор: Sahil Hamirani

  • Кожного разу, коли ми виконуємо клас Java, наступна послідовність кроків буде виконуватися як частина статичного потоку контролю.
  1. Ідентифікація статичних членів згорі до низу. [1 до 6]
  2. Виконання присвоєнь статичних змінних і статичних блоків згорі до низу. [7 до 12]
  3. Виконання методу main. [13 до 15]

Приклад:

pic

Приклад статичного контролю потоку | автор: 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)

Leave a Reply

Your email address will not be published. Required fields are marked *