Что такое загрузка классов и статические блоки в Java?

Опубликовано: 4 Февраля, 2022

Загрузка класса - это процесс сохранения в памяти информации, относящейся к классу. Информация, относящаяся к классу, означает информацию о членах класса, т. Е. Переменных и методах. Это точно так же, как прежде, чем выстрелить, нам нужно сначала зарядить пулю в пистолет. Точно так же, чтобы сначала использовать класс, нам нужно загрузить его с помощью загрузчика классов. Статический блок запускается только один раз в жизни класса. Он может получить доступ только к статическим членам и будет принадлежать только классу.

Статический блок, как и любой блок кода, начинающийся с ключевого слова static, является статическим блоком. Статический - это ключевое слово, которое при присоединении к методу, переменной, блоку делает его методом класса, переменной класса и блоком класса. Вы можете вызвать статическую переменную / метод, используя ClassName. JVM выполняет статический блок в «ВРЕМЯ ЗАГРУЗКИ КЛАССА».

Порядок исполнения: Для каждого статического блока существует порядок, в котором инициализируется статический блок / метод / переменная.

  1. Статический блок
  2. Статическая переменная
  3. Статический метод

Now figuring out the connection between class loading and static block after having an idea over the static block and class loading, it is found that execution of a static block happens when a class gets loaded for the first time. It is a series of steps.

Иллюстрация: демонстрация общего выполнения этого статического блока должна происходить с последовательностью шагов, как уже упоминалось.

При случайном рассмотрении java-файла File.java, имеющего в нем статический блок, следует ряд упомянутых шагов.

  1. Компиляция java файла.
  2. Выполнение java файла.
  3. JVM виртуальной машины Java вызывает основной метод в программе.
  4. Класс загружен, и теперь вся необходимая информация хранится в памяти.
  5. Начинается выполнение статического блока.

Example      

Java

// Java Program to illustrate static block concept
// alongside discussing the class loading
  
// Importing all input output classes
import java.io.*;
  
// Class
class GFG {
  
    // Static block
    static
    {
        // Static block will be executed first
        // before anything else
  
        // Print message
        System.out.println(
            "I am static block and will be shown to eyeballs first no matter what");
    }
  
    // Main driver method
    public static void main(String[] args)
    {
        // Print message
        // Now main method will execute
        System.out.println(
            "I am the only line in main method but static block is hindering me to display first");
    }
}
Output
I am static block and will be shown to eyeballs first no matter what
I am the only line in main method but static block is hindering me to display first

Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .