静态-如果您声明方法,子类,块或静态变量,则将其与类一起加载。
在Java中,只要需要调用(实例)方法,就应该实例化(包含它的)类并调用它。如果我们需要不实例化地调用方法,则它应该是静态的。此外,静态方法与类一起被加载到内存中。
对于main方法,它是由JVM直接调用的,因此无法通过实例化其类来调用它。并且,它应该与类一起加载到内存中并可以执行。因此,主要方法应该是静态的。
当主要方法为非静态时
公共静态void main(String ar [])方法是Java中执行的入口点。当我们运行.class文件时,JVM会搜索main方法并逐行执行其内容。
您可以在没有static修饰符的情况下在程序中编写main方法,这样程序便可以编译而不会出现编译错误。但是,在执行JVM时,JVM不会将此新方法(没有静态方法)视为程序的入口点。
它搜索主要方法,该方法是公共的,静态的,返回类型为void,并将String数组作为参数。
如果找不到这样的方法,则会生成运行时错误。
为什么main方法是静态的(static)
正因为main方法是静态的,JVM调用这个方法就不需要创建任何包含这个main方法的实例。
因为C和C++同样有类似的main方法作为程序执行的入口。
如果main方法不声明为静态的,JVM就必须创建main类的实例,因为构造器可以被重载,JVM就没法确定调用哪个main方法。
静态方法和静态数据加载到内存就可以直接调用而不需要像实例方法一样创建实例后才能调用,如果main方法是静态的,那么它就会被加载到JVM上下文中成为可执行的方法。
为什么main方法是公有的(public)
Java指定了一些可访问的修饰符如:private、protected、public,任何方法或变量都可以声明为public,Java可以从该类之外的地方访问。因为main方法是公共的,JVM就可以轻松的访问执行它。
为什么main方法没有返回值(Void)
因为main返回任何值对程序都没任何意义,所以设计成void,意味着main不会有任何值返回