面试招行信用卡中心时问到这个问题,我可能回答得不全面,参考面试宝典在此整理一下:
1.该方法是Java程序的入口方法,程序运行时,JVM首先会查找main()方法。其中,public是权限修饰符,static表明mian()方法是一个静态方法,即方法中的代码是存储在静态存储区的,这个类被加载后,就可以使用该方法而不需要通过实例化对象来访问,可以直接通过类名.main()直接访问,JVM在启动时就是按照上述方法的签名(必须有public和static修饰,返回值为void,且方法的参数为字符串数组)来查找方法的入口地址,若能找到就执行,不能找到就报错,void表明方法没有返回值,main是JVM识别的特殊方法名,是程序的入口方法。字符串参数是为开发人员在命令行状态下与程序交互提供了一种手段。
2.为什么要用public和static修饰main()?
public表示该函数的访问权限是最大的,能够被外部调用。因此,JVM可以轻松地访问它。
至于static修饰,首先,我们要知道static修饰的变量称为静态变量,static修饰的方法称为静态方法,static方法属于类而不是属于某个对象,所以可以直接通过类名调用,而不必创建实例。其次,我们也要知道类被加载时,类的静态部分(静态变量、静态代码块和静态块)首先分配了内存空间并完成初始化操作,当非静态方法调用它们的时候,已经有了内存空间。因此,JVM在调用这个方法时就不需要创建任何包含这个main方法的实例。
3.main不是关键字,他只是一个能够被JVM识别的特殊的单词。
4.如果JVM找不到main方法,就会抛出异常NoSuchMethod:main。
main函数的写法:
除了public static void main(String[] agrs)(args是参数名,可以变化)这种写法外,还可以使用final、synchronized等关键字修饰。