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方法手动传入实参(有特殊符号时可以加上 "" ):

JavaSE-23-1