在Java中使用{}块有什么用处

Jay*_*out -2 java

你好朋友在Java类中只有一个块有什么用

public class StaticExample {
  {
    System.out.println("I m here...");
  }
}
Run Code Online (Sandbox Code Playgroud)

tbo*_*odt 7

这是一个初始化块.它在创建新实例时执行.如果您认为这是构造函数的工作,那么无论使用哪个构造函数,都可以放置执行的代码.它们按照它们出现的顺序执行,在构造函数之前.如果你放在static一个初始化块之前,它就变成了一个静态初始化块,它在加载类后立即执行.

  • 从技术上讲,它们是在超级构造函数调用之后和正文的其余部分之前执行的.如果超类ctor调用虚方法,这实际上很重要. (2认同)

Rei*_*eus 5

它被称为初始化块,每次创建类的实例时都会调用它.

Java编译器将初始化程序块复制到每个构造函数中.因此,该方法可用于在多个构造函数之间共享代码块.

代码在构造函数中的代码之前调用,并且不依赖于后者.

public class InitializerExample {

    public InitializerExample() {
        System.out.println("InitializerExample");
    }

    {
        System.out.println("I'm here...");
    }

    public static void main(String[] args) {
        new InitializerExample();
    }
}
Run Code Online (Sandbox Code Playgroud)

会产生

I'm here...
InitializerExample
Run Code Online (Sandbox Code Playgroud)

它在此处的官方教程中有记录

  • `super()`首先是`{}`然后你的构造函数块代码 (5认同)