在Java语言中,main()办法是程序的入口办法,在程序运行时,最先加载的就是main()办法,但这是否意味着main()办法就是程序运行时第一个被执行的模块呢?

答案不是的,在Java语言中,因为动态块在类被加载时就会被调用,因而能够在main()办法执行前,利用动态块实现输入"Hello World"的性能,以如下代码为例。

package com.magic.main;public class StaticMainDemo {    static {        System.out.println("Hello World!");    }    public static void main(String[] args) {        System.out.println("Hello, main method!");    }}

运行 StaticMainDemo,能够看到如下的输入信息:

Hello World!Hello, main method!

从输入后果来看,"Hello World!" 是优先在 main() 办法执行前输入的。下面的示例代码中,static 动态代码块位于 main() 办法之前,如果调换一下地位,输入的后果还会是一样的吗?

package com.magic.main;public class StaticMainDemo {    public static void main(String[] args) {        System.out.println("Hello, main method!");    }    static {        System.out.println("Hello World!");    }}

再次执行,能够看到输入是一样的

Hello World!Hello, main method!

也就是说,不论动态代码块所处于什么地位,都是优先于 main() 办法执行的,至于为什么会是这样的呢?这又波及到另外的一个知识点了,那就是 Java程序初始化的程序问题

因为此篇文章次要是用来分享对于 Java 中 main() 办法的,因而就不再展开讨论 Java 程序初始化的程序问题了,然而呢,这里贴上一张对于【Java程序初始化的程序是怎么的?】的答案解析截图,如下:

更多无关Java面试相干的知识点能够关注【Java面试手册】小程序,波及Java根底、多线程、JVM、Spring、Spring Boot、Spring Cloud、Mybatis、Redis、数据库、数据结构与算法等。