java中main函数解析

转载 2013年12月03日 23:17:33

从写java至今,写的最多的可能就是主函数

public static void main(String[] args) {}

但是以前一直都没有问自己,为什么要这么写,因为在c语言中就没有这样子的要求。其实这是一个不需要解释的问题,因为java标准就是这么规定的,那么既然是java标准规定的,我们按照规定来执行就好了。不过,这并不是一个很好的学习态度,如果总是知其然而不知其所以然,总会对java有种隔膜的感觉。就是发现问题了,不去解决,不去了解为什么,心里总是会有牵绊。今天既然自己都这么问自己了,为什么java的主函数要按照这个格式来写,那么我就得弄明白为什么。

在java中,main()方法是java应用程序的入口方法。java虚拟机通过main方法找到需要启动的运行程序,并且检查main函数所在类是否被java虚拟机装载。如果没有装载,那么就装载该类,并且装载所有相关的其他类。因此程序在运行的时候,第一个执行的方法就是main()方法。通常情况下, 如果要运行一个类的方法,必须首先实例化出来这个类的一个对象,然后通过"对象名.方法名()"的方式来运行方法,但是因为main是程序的入口,这时候还没有实例化对象,因此将main方法声明为static的,这样这个方法就可以直接通过“类名.方法名()”的方式来调用。

实例

 虚拟机通过调用某个指定类的方法main启动,传递给main一个字符串数组参数,使指定的类被装载,同时链接该类所使用的其它的类型,并且初始化它们。例如对于程序:

复制代码
public class HelloApp {
    public static void main(String[] args) {
        System.out.println("Hello World!");
        for (int i = 0; i < args.length; i++) {
            System.out.println(args);
        }
    }
}
复制代码

 编译后在命令行模式下键入: java HelloApp run virtual machine

  将通过调用HelloApp的方法main来启动java虚拟机,传递给main一个包含三个字符串"run"、"virtual"、"machine"的数组。现在我们略述虚拟机在执行HelloApp时可能采取的步骤。

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


解析java中main函数为什么是这样写

我们在写程序的过程主函数都是固定的,但是这是不是意味着完全不能改呢? 不是的,现在就来深入一下主函数的写法意义… public class MainDemo { public sta...
  • lxjstudyIT
  • lxjstudyIT
  • 2016年07月14日 11:19
  • 972

java中main函数中的 参数(String [] args)

最近看到了java里main函数的参数(string[] args)的使用,不明白其中的道理,网上搜了一下,找到一篇讲的比较好的文章,给大家分享一下,原文链接如下: http://blog.sina...
  • Linda_Lindaaaa
  • Linda_Lindaaaa
  • 2015年05月03日 21:37
  • 1330

java中main函数的参数

java中的main函数是一个程序执行的入口,main函数必须被声明为static的,在编译的时候就已经为其分配了内存,就是说,不用调用也能执行的,那么main函数的参数有什么作用呢?参数args的主...
  • u010980545
  • u010980545
  • 2013年11月16日 11:02
  • 4111

Java之主函数——main函数

main函数特殊之处: 1 格式是固定的。 2 被jvm所识别和调用。 main函数关键字分析: 对于 public static void main(String[] args) public:...
  • qiaoquan3
  • qiaoquan3
  • 2016年11月24日 20:52
  • 10840

Java的main函数解析

JAVA中的主函数是我们再熟悉不过的了,相信每个学习过JAVA语言的人都能够熟练地写出这个程序的入口函数,但对于主函数为什么这么写,其中的每个关键字分别是什么意思,可能就不是所有人都能轻松地答出来的了...
  • fsz521
  • fsz521
  • 2012年08月16日 11:00
  • 390

Java 中main函数的参数

1、运行Java程序的同时,可以通过输入参数给main函数中的接收参数数组args[],供程序内部使用。即当你在Java命令行后面带上参数,Java虚拟机就直接把它们存放到了main方法中的参数Str...
  • cherrybomb1111
  • cherrybomb1111
  • 2017年05月12日 15:12
  • 420

java中main函数后面带的参数(String[] args)是什么意思?

书上说是传递什么参数,我初学java,也感觉不到他发挥什么作用了,还为什么就要写成String,还要是个数组是为什么?  问题补充:还有那个数组也必须叫args吗?最佳答案这个是运行程序前给它的参数。...
  • aiouwen521
  • aiouwen521
  • 2010年10月11日 14:58
  • 11226

java的main函数中的args数组传值问题

main函数中args数组传值问题
  • qq_24877569
  • qq_24877569
  • 2016年07月17日 11:56
  • 2857

java中main函数的参数问题

package test; public class RandomTest { /** * * 运行结果: * (args==null)=false * (args==null...
  • wangpanbaoding
  • wangpanbaoding
  • 2013年07月06日 17:40
  • 1757

eclipse java 给main函数传入参数

eclipse执行一个程序时候是这样, 鼠标右键 —> Run As —> 然后会有两 第一个是 Java Application 当然就是楼主说的直接运行了 第二个是 Open Run Dialog...
  • sunny_sailor
  • sunny_sailor
  • 2012年03月26日 17:31
  • 1832
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java中main函数解析
举报原因:
原因补充:

(最多只允许输入30个字)