我们来看一下主函数

public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World");
}
}
main方法是一个特殊的规范,和JVM的运行原理有关
 

(1)main

JVM启动会找main方法,并且检查main函数所在类是否被java虚拟机装载。如果没有装载,那么就装载该类,并且装载所有相关的其他类。
因此程序在运行的时候,第一个执行的方法就是main()方法。
 

(2)static

通常情况下, 如果要运行一个类的方法,必须首先实例化出来这个类的一个对象,然后通过"对象名.方法名()"的方式来运行方法,但是因为main是程序的入口,这时候还没有实例化对象,因此将main方法声明为static的,这样这个方法就可以直接通过“类名.方法名()”的方式来调用。
 

(3)args

作用是从命令行取得输入参数,这样在程序中可以调用。
我们修改一下main方法
public class HelloWorld{
public static void main(String[] args){
System.out.println("args[]");
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
}
}
执行方法和运行结果
传递给main一个包含字符串的数组args

 

JVM运行main的流程

①JVM开始试图执行类HelloWorld的main方法,
②JVM发现该类并没有被装载,也就是说JVM当前不包含该类的二进制代表,于是JVM使用ClassLoader试图寻找这样的二进制代表。
③如果这个进程失败,则抛出一个异常。
④类被装载后同时在main方法被调用之前,必须对类HelloWorld与其它类型进行链接然后初始化。
⑤链接包含三个阶段:检验,准备和解析。检验检查被装载的主类的符号和语义,准备则创建类或接口的静态域以及把这些域初始化为标准的默认值,解析负责检查主类对其它类或接口的符号引用,在这一步它是可选的。
⑥类的初始化是对类中声明的静态初始化函数和静态域的初始化构造方法的执行。
⑦一个类在初始化之前它的父类必须被初始化。整个过程如下:
 

 

最新文章

  1. 【Python⑤】python序列---list和tuple
  2. GridLookUpEdit多列模糊查询最简单方式 z
  3. 为sproto添加python绑定
  4. Java File类基本操作
  5. ant导入Zookeeper到Eclipse错误path contains invalid character
  6. 【阿里云产品公测】ACE安装Discuz超详细图文教程
  7. ios 数字禁止变成电话号码
  8. jQuery中get与eq的区别
  9. 容器 SET part2
  10. apache-tomcat-7 设置最大上传.war文件大小[zhuan]
  11. 第三章 视图和URL配置
  12. python网络爬虫之使用scrapy自动爬取多个网页
  13. 浅谈Notepad++选中行操作+快捷键+使用技巧【超详解】
  14. vuex - 项目结构目录及一些简单配置
  15. 【python】——购物车
  16. apache tomcat (catalina)查版本(solaris/unix)
  17. shell之重定向
  18. Python.Flask.0
  19. Python基础教程学习笔记:第一章 基础知识
  20. Controller - 压力机的设置 - 界面图表分析

热门文章

  1. 「2014-3-11」HTTP 初步探究
  2. C#数据结构杂记
  3. 6410移植android4.4.2笔记(持续更新)
  4. 插入排序-java
  5. requirejs按需加载angularjs文件
  6. java入门(1)
  7. 拾遗——java多线程
  8. 让Entity Framework启动不再效验__MigrationHistory表
  9. 使用Immutable优化复制注意事项
  10. 【腾讯Bugly干货分享】腾讯验证码的十二年