浅谈Java文件执行顺序、main程序入口的理解
2019-03-28 11:00
369 查看
在我们通过JVM编译Java后缀名的文件时,JVM首先寻找入口(main方法)
public static void main(String[] args)
1、由于在入口时,未调用任何对象,该方法只能设置为static静态
2、JVM为Java的最底层,所以即使有返回结果,结果也无处可去,因此该方法必然是void无返回值
3、由于main方法是入口,被JVM自动调用,只有将该方法设置为public公有级别才能对JVM可见
综上,入口main方法只能写为
public static void main(String[] args)
在我们没有写main方法时,系统会自动会为我们添加一个无参mian主方法,该方法的添加位置为public类中首行(之前也提到过,只有添加在public级别中才对JVM可见,可以自动调用)
注意:如果在java文件中未包含任一公共类(public class),此文件依然可以通过编译,但是主动运行由于找不到public class,就无法自动添加main方法,JVM找不到程序入口,运行会报错,即编译通过运行报错,缺少public class的文件需要等待被其它java文件调用,无法作为入口。
package j2se; class X{ Y y=new Y(); public X(){ System.out.print("X"); } } class Y{ public Y(){ System.out.print("Y"); } } //public class Z extends X{ // Y y=new Y(); // public Z(){ // System.out.print("Z"); // } // public static void main(String[] args) { // new Z(); // } //}
报错:
错误: 找不到或无法加载主类 j2se.Z
原因: java.lang.ClassNotFoundException: j2se.Z
当我们加上public类(public class)后,编译运行通过,根据返回结果可以清楚看到程序的执行顺序,代码如下:
package j2se; class X{ Y y=new Y(); public X(){ System.out.print("X"); } } class Y{ public Y(){ System.out.print("Y"); } } public class Z extends X{ Y y=new Y(); public Z(){ System.out.print("Z"); }public static void main(String[] args) { new Z(); } }
运行结果:YXYZ
根据这个运行结果,我们可以看出,程序运行后JVM编译顺序为,JVM直奔public class中main()方法作为入口,并开始编译执行
public static void main(String[] args)
以上所述是小编给大家介绍的Java文件执行顺序、main程序入口的详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:
相关文章推荐
- 程序入口main方法的理解、java基本数据类型、数据间相互转化
- [Pthread] Linux上程序执行的入口--Main
- Java异常发生时程序的执行顺序
- Java桌面程序打包成exe可执行文件
- Java 在windows上操作系统文件与程序,执行系统命令等的技巧
- Eclipse下好使,但是cmd下执行java运行class文件提示Exception in thread "main" java.lang.NoClassDefFoundError问题
- 将Java包程序转换为Exe可执行文件
- 理解Java类中构造方法的执行顺序和变量初始化
- 将Java程序变成可执行文件的简单方法
- Java桌面应用安装部署、安装程序制作(exe4j + Inno Setup)——之三:使用exe4j生成EXE可执行文件
- JAVA程序执行顺序
- java调用exe文件执行系统程序
- Bat文件执行java命令,报:javac不是内部或外部命令,也不是可运行的程序或批处理文件
- java编程思想static之程序执行顺序
- 用java程序调用ffmpeg执行视频文件格式转换flv
- JAVA子父类内部程序的执行顺序
- 关于Java程序的入口方法main
- 如何将做好的JAVA程序生成可执行文件
- java中调用其他文件(可执行程序,word,浏览器,bat……等)
- 为什么执行JAVA程序时,会出现Exception in thread"main" java.lang.NoClassDefFoundError