为程序运行入口
一、public
public是一种访问权限修饰符,public中文翻译共有,正如它的实际意思一样,在Java里面所有被public修饰的方法,类等都可以在任意其他地方调用。main方法之所以是public,是因为一个Java程序在运行时首先创建一个JVM实例,程序要运行需要调用main方法,JVM从外部调用main方法这就需要访问权限修饰符必须给出外部访问的权限,所以只能用public。
二、static
static的定义是为了JVM在调用main方法时不用实例化对象,只需要在初始时加载main方法所在类,然后直接通过类名.main来调用main方法。
三、void
void关键字表明main()的返回值是无类型。
这个很好理解,假设是有返回值的,JVM调用了main方法,main将数据返回给JVM,main方法一旦返回数据,也就意味着程序结束了,而JVM要这个返回的数据是没有意义的。所以就设计main方法为void。
四、main
这个没什么好说的,只不过是JVM能识别的一个特殊的函数名而已。
五、String [] args
(1)在命令行下设置启动参数
public class Demo {
public void main(String[] args) {
System.out.println("数组的长度:"+args.length);
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]+",");
}
}
}
编译:javac Demo.java
运行:java Demo aa bb cc
运行结果:数组长度:3
aa,bb,cc
(2)可以在另一个类中向包含main()的类传递参数,如下例:
public class A {
public static void main(String[] args)
{ for(int i=0;i <args.length;i++)
System.out.println(args[i]);
}
}
public class B {
public static void main(String[] args)
{ c = new A();
String[] b = {"111","222","333"};
c.main(b);
}
}
首先定义一个class A,在A中定义一个main()函数,在该函数中输出参数args。然后定义一个classB,在B中初始化一个A的实例c,然后向c传递参数,并且调用c的main方法打印出传入的参数值。输出结果如下:
111
222
333
由于main()函数是静态函数,即不需要实例化也能使用,所以B使用下面的写法也能完成相同的功能:
public class B {
public static void main(String[] args)
{
//A c = new A();
String[] b = {"111","222","333"};
A.main(b);
}
}
总结:参数args的主要作用是为程序使用者在命令行状态下与程序交互提供了一种手段。此外在其他类中直接使用main()函数,并传递参数也是可行的,虽然这种方法不太常用,但毕竟为我们提供了一种选择。