📜  什么是Java中的类加载和静态块?

📅  最后修改于: 2022-05-13 01:54:28.063000             🧑  作者: Mango

什么是Java中的类加载和静态块?

类加载是将特定于类的信息存储在内存中的过程。特定于类的信息意味着关于类成员的信息,即变量和方法。就像在发射子弹之前,首先我们需要将子弹装入手枪中。类似地,要首先使用一个类,我们需要通过类加载器来加载它。静态块在一个类的生命周期中只运行一次。它只能访问静态成员并且只属于类。

静态块就像任何以“static”关键字开头的代码块都是静态块。 Static 是一个关键字,当附加到方法、变量时,Block 使其成为类方法、类变量和类 Block。您可以使用 ClassName 调用静态变量/方法。 JVM 在“类加载时间”执行静态块。

执行顺序: 对于每个静态块,都有一个初始化静态块/方法/变量的顺序。

  1. 静态块
  2. 静态变量
  3. 静态方法

Java 中的静态块

插图:展示该静态块的通用执行应该通过前面提到的一系列步骤发生。

随机考虑一个Java文件'File. Java',其中有一个静态块,然后是一系列提到的步骤。

  1. 编译Java文件。
  2. 执行Java文件。
  3. Java虚拟机JVM在程序中调用main方法。
  4. 类已加载,所有必要的信息现在都已存储在内存中。
  5. 静态块的执行开始。

执行静态块

例子

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");
    }
}


输出
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