1. 形式
Java里面的main函数形式如下:
public static void main(String[] args) {
//your code
}
2. 解释
public: 权限修饰符,表明任何类和对象都可已访问它.
static: 表明其是静态方法, 即其的代码存储在静态存储区, 类加载之后, 便可通过类名.main()访问,不用实例化对象.
void: 函数的返回值为空.
args: 字符串数组, 名字可变.
3. 为什么是那样的写法
main: JVM识别的特殊方法名——程序入口方法.
public: JVM需要使用该类的方法,就必须设为public,否则是没办法访问该类的.
static: JVM加载类时, 没有实例化对象, 只能访问静态变量和方法.
void: 必须是这个,笔者不清楚这个是为什么.
args: 用以接收命令行参数,必须为String, 也可以是可变参数.
4. main小零碎
a. public static, 必须有,但是顺序无所谓, void必须跟着方法名.
b. 可以用final, synchronized修饰, 不能被abstract修饰.
c. String[] args 可换为 String … args
public static final void main(String[] args){}
static public void main(String[] args) {}
static public synchronized void main(String[] args) {}
public static void main(String ... args) {}
d. main能被重载.
e. 一个类文件里可以有多个main方法,因为一个文件可以放多个类.
5. 误区
main虽然是第一个被方法, 但不一定是首先被执行的语句. 如下代码片段说明:
public class Main() {
static {
for (int i = 0; i < 3; i++) {
System.out.println("hello" + i);
}
}
public static void main(String[] args) {
System.out.println("hello");
}
}
/**
* 输出如下:
* hello0
* hello1
* hello2
* hello
* 解释如下:
* Java先初始化静态属性, 在初始静态代码块, 然后初始普通的代码. 对于继承和实现,都是最后初始化自己,先初始继承的类和实现的接口.
*/