Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Last active August 30, 2025 12:06
Show Gist options
  • Select an option

  • Save sunmeat/eade02f5ebfba2b69b7e to your computer and use it in GitHub Desktop.

Select an option

Save sunmeat/eade02f5ebfba2b69b7e to your computer and use it in GitHub Desktop.
static initializer block
package com.alex.static;
// клас для демонстрації статичних блоків ініціалізації
class StaticFields {
// статичне поле з початковим значенням
private static int a = 3;
// статичне поле без початкового значення
private static int b;
// нестатичне поле
private int c;
// перший статичний блок ініціалізації
static {
System.out.println("статичний блок ініціалізації 1 викликано");
b = 15; // ініціалізація статичного поля b
// a = c; // помилка: не можна звертатися до нестатичних полів
System.out.println("b ініціалізовано значенням: " + b);
}
// другий статичний блок ініціалізації :))
static {
System.out.println("статичний блок ініціалізації 2 викликано");
a = b * 2; // обчислення нового значення для a на основі b
System.out.println("a переініціалізовано значенням: " + a);
}
// конструктор для ініціалізації нестатичного поля
StaticFields() {
c = 20; // ініціалізація нестатичного поля c
System.out.println("конструктор викликано");
}
// звичайний метод для виведення значень полів
public void commonMeth() {
System.out.println("звичайний метод:");
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
}
// статичний метод для виведення значень статичних полів
public static void staticMeth() {
System.out.println("статичний метод:");
System.out.println("a = " + a);
System.out.println("b = " + b);
// System.out.println("c = " + c); // помилка: не можна звертатися до нестатичних полів
}
}
// головний клас для демонстрації роботи статичних блоків
public class Main {
public static void main(String[] args) {
// виведення привітання
System.out.println("привіт із main!");
// доступ до статичних полів без створення об'єкта
System.out.println("\nдоступ до статичних полів напряму:");
System.out.println("StaticFields.a = " + StaticFields.a);
System.out.println("StaticFields.b = " + StaticFields.b);
// System.out.println(StaticFields.c); // помилка: нестатичне поле
// виклик статичного методу
System.out.println("\nвиклик статичного методу:");
StaticFields.staticMeth();
// створення об'єкта для доступу до нестатичних членів
System.out.println("\nстворення об'єкта StaticFields:");
StaticFields sf = new StaticFields();
// доступ до полів через об'єкт
System.out.println("\nдоступ до полів через об'єкт:");
System.out.println("sf.a = " + sf.a); // не рекомендується, але працює
System.out.println("sf.b = " + sf.b); // не рекомендується, але працює
System.out.println("sf.c = " + sf.c);
// виклик методів через об'єкт
System.out.println("\nвиклик методів через об'єкт:");
sf.staticMeth(); // не рекомендується, але працює
sf.commonMeth();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment