关于java:Java面试手册基础篇如何实现在main方法执行前输出Hello-World

3次阅读

共计 980 个字符,预计需要花费 3 分钟才能阅读完成。

在 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、数据库、数据结构与算法等。

正文完
 0