Java中的main()⽅法详解
在Java中,main()⽅法是Java应⽤程序的⼊⼝⽅法,也就是说,程序在运⾏的时候,第⼀个执⾏的⽅法就是main()⽅法,这个⽅法和其他的⽅法有很⼤的不同,⽐如⽅法的名字必须是main,⽅法必须是public static void 类型的,⽅法必须接收⼀个字符串数组的参数等等。
在看Java中的main()⽅法之前,先看⼀个最简单的Java应⽤程序HelloWorld,我将通过这个例⼦说明Java类中main()⽅法的奥秘,程序的代码如下:
1/**
2* Java中的main()⽅法详解
3*/
4public class HelloWorld {
5public static void main(String args[]) {
6 System.out.println("Hello World!");
7 }
8 }
⼀、先说类:
HelloWorld 类中有main()⽅法,说明这是个java应⽤程序,通过JVM直接启动运⾏的程序。
既然是类,java允许类不加public关键字约束,当然类的定义只能限制为public或者⽆限制关键字(默认的)。
⼆、再说main()⽅法
这个main()⽅法的声明为:public static void main(String args[])。必须这么定义,这是Java的规范。
为什么要这么定义,和JVM的运⾏有关系。
当⼀个类中有main()⽅法,执⾏命令“java 类名”则会启动虚拟机执⾏该类中的main⽅法。
由于JVM在运⾏这个Java应⽤程序的时候,⾸先会调⽤main⽅法,调⽤时不实例化这个类的对象,⽽是通过类名直接调⽤因此需要是限制为public static。
对于java中的main⽅法,jvm有限制,不能有返回值,因此返回值类型为void。
main⽅法中还有⼀个输⼊参数,类型为String[],这个也是java的规范,main()⽅法中必须有⼀个⼊参,类细必须String[],⾄于字符串数组的名字,这个是可以⾃⼰设定的,根据习惯,这个字符串数组的名字⼀般和sun java规范范例中mian参数名保持⼀致,取名为args。
因此,main()⽅法定义必须是:“public static void main(String 字符串数组参数名[])”。
三、main()⽅法中可以throw Exception
因此main()⽅法中可以抛出异常,main()⽅法上也可以声明抛出异常。
⽐如,下⾯这个写法是正确的:
1public class TestMain {
2public static void main(String[] args) throws Exception {
3 System.out.println("哈哈哈哈哈");
4throw new Exception("");
5 }
6 }
运⾏结果:
1哈哈哈哈哈
2 Exception in thread "main" java.lang.Exception:
3 at maintest.TestMain.main(TestMain.java:11)
4 flect.NativeMethodAccessorImpl.invoke0(Native Method)
5 flect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
6 flect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
7 at flect.Method.invoke(Method.java:585)
8 at cution.application.AppMain.main(AppMain.java:90)
9
10 Process finished with exit code 1
四、main()⽅法中字符串参数数组作⽤
main()⽅法中字符串参数数组作⽤是接收命令⾏输⼊参数的,命令⾏的参数之间⽤空格隔开。
下⾯给出⼀个例⼦,看看如何初始化和使⽤这个数组的。
1/**
2* 打印main⽅法中的输⼊参数
3*/
4public class TestMain {
5public static void main(String args[]){
6 System.out.println("打印main⽅法中的输⼊参数!");
7for(int i=0;i<args.length;i++){
8 System.out.println(args[i]);
9 }
10 }
11 }
执⾏⽅法和运⾏结果
1 D:\Study\basetest\src>javac TestMain.java
2
3 D:\Study\basetest\src>java TestMain 1 2 3
4打印main⽅法中的输⼊参数!
5 1
6 2
7 3
五、给出HelloWorld的另外⼀个版本
1/**
2* 变态版的HelloWorld.呵呵
java中字符串转数组3*/
4public class HelloWorld2 {
5static {
6 System.out.println("Hello Wordld!");
7 }
8public static void main(String args[]){
9 it(0);
10 }
11 }
这个main()⽅法执⾏的内容就⼀句"it(0);" ,⽬的是让程序正常结束。那“HelloWorld!”是从哪⾥打印的,秘密就是在static打印的,因为static代码块的内容会在main调⽤前调⽤。
总结:
main⽅法作为⼀个特殊的规范,与普通的⽅法有很⼤区别,限制很多,理解其原理需要学习JVM相关知识。是Java中学习中⼤障碍。这是我对main原理和使⽤的总结,欢迎各位在此讨论。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论