转载自 小菜:关于main方法的面试题
问题:如果main方法被声明为private会怎样?
答案:能正常编译,但运行的时候会提示“main方法不是public的”。
问题:如果去掉了main方法的static修饰符会怎样?
答案:程序能正常编译。运行时会抛NoSuchMethodError异常。
问题:public static void写成static public void会怎样?
答案:程序正常编译及运行。
问题:main方法的参数里面,字符串数组的第一个参数是什么?
答案:数组是空的,没有任何元素。不像C或者C++,第一个元素默认是程序名。如果命令行没有提供任何参数的话,main方法中的String数组为空,但不是null。
问题:一个类能拥有多个main方法吗?
答案:可以,但只能有一个main方法拥有以下签名:public static voidmain(String[] args) ;否则程序将无法通过编译。编译器会警告你main方法已经存在。
问题:程序中可以允许多个类同时拥有都有main方法吗?
答案:可以。当程序运行的时候,我们会指定运行的类名。JVM只会在你指定的类中查找main方法。因此多个类拥有main方法并不存在命名冲突的问题。
问题:说明一下public static void main(String args[])这段声明里每个关键字的作用。
答案:public: main方法是Java程序运行时调用的第一个方法,因此它必须对Java环境可见,所以可见性设置为public。
static: Java平台调用这个方法时不会创建这个类的一个实例,因此这个方法必须声明为static。
void: main方法没有返回值。
String是命令行传进参数的类型,args是指命令行传进的字符串数组。