如果一个类中有 main 方法,并且它是您要运行的类,那么 java 总是在 main 方法内部开始执行。
例如在这种情况下,
public class Test {
public static void main(String[] args) {
A a = new A();
a.method();
}
public static void method() {
System.out.println("method() in class Test");
}
}
class A {
public static void main(String[] args) {
Test.method();
}
public void method() {
System.out.println("method() in class A");
}
}
如果我运行Test.java,那么Test类的main方法会先执行,反之亦然。
现在有一种方法可以让 java 在查看类的 main 方法之前运行代码。看看下面的代码。
public class Test {
static {
A a = new A();
a.method();
}
public static void main(String[] args) {
System.out.println("main() of Test executing");
}
}
class A {
public void method() {
System.out.println("method() in class A");
}
}
在类中使用static{...} 使得首先执行static 块中的代码,然后是主块。它被称为 static initializer 是 java 类中的一个静态 {} 代码块,并且
在调用构造函数或 main 方法之前只运行一次。
它是任何java类中的一段代码static { ... },在类被调用时由虚拟机执行。
- 不支持返回语句。
- 不支持任何参数。
- 不支持 this 或 super。
通常这可以在任何地方使用。但我看到它大部分时间用于进行数据库连接、API 初始化、日志记录等。