main方法是程序的入口。在同一个类中,如果有多个方法,那么虚拟机就会识别main方法,将这个方法作为程序的入口。
main方法的格式严格遵循:
public static void main(String[] args){}
Question1:程序中是否可以有其他名为main的方法?
Answer1:可以,构成了方法的重载。例如:
public class TestArray10{
public static void main(String[] args){
}
public static void main(String str){
}
}
Question2:main方法的形参为 String[]
类型,那么实参究竟是什么呢?
Answer2:我们不妨从侧面验证:
public class Test {
public static void main(String[] args){
// int[] arr1 = null;
// System.out.println(arr1.length); // Exception in thread "main" java.lang.NullPointerException
// int[] arr2 = new int[0];
// System.out.println(arr2.length); // 0
// int[] arr3 = new int[4];
// System.out.println(arr3.length); // 4
// System.out.println(args.length); // 0
for(String str: args){
System.out.println(str); // 无输出
}
}
}
从结果中可以看出,实参是 new String[0]
。即默认情况下虚拟机调用main方法的时候就是传入了一个长度为0的数组。
我们可以尝试给main方法手动传入实参(有特殊符号时可以加上 ""
):