代码之家  ›  专栏  ›  技术社区  ›  GuruKulki

是否可以重载主要方法?

  •  2
  • GuruKulki  · 技术社区  · 15 年前

    是否可以重载主要方法?如果是,JVM将从哪个方法开始执行?

    7 回复  |  直到 11 年前
        1
  •  2
  •   Saurabh Gokhale    14 年前

    对。主方法可以像Java中的任何其他方法一样重载。

    通常的声明是

    public static void main(String[] args) throws Exception;
    

    当启动Java应用程序时,它会寻找一个带有名称的静态方法。 main '返回类型' void' 以及字符串数组的单个参数。也就是说,你所投的对解决这个方法并不重要。

    重载为多个方法提供了相同的名称但不同的参数(可能还有返回类型)。

    有了以上的解释,我们就可以超载主要方法了。

        2
  •  5
  •   notnoop    15 年前

    可以重载主方法,但jvm始终使用以下签名启动主方法:

    public static void main(String[] args);
    
        3
  •  5
  •   gameover    15 年前

    正如其他人所说,很有可能,但执行总是从

    public static void main(String[] args)
    

    演示以下内容的小程序:

    public class Test{
    
        public static void main(String [] args){
            System.out.println("First");
            main();
        }
    
        public static void main(){
            System.out.println("Second");   
        }
    }
    

    输出:

    First
    Second
    
        4
  •  1
  •   fastcodejava    15 年前

    对。可以重载主方法,但在执行类时将执行以下方法:

    public static void main(String[] args)
    
        5
  •  0
  •   ZoogieZork    15 年前

    根据Java语言规范:

    必须声明方法main 公开、静态和无效。它必须 接受一个单独的参数 字符串数组。

    http://java.sun.com/docs/books/jls/third_edition/html/execution.html (12 1.4)

    所以,只有 public static void main(String[] args) 将执行个重载。

        6
  •  0
  •   vkg    11 年前

    以字符串作为参数的主方法是程序的默认入口点。 您可以超载,但它不会改变程序的入口点。

        7
  •  -1
  •   thejartender    13 年前

    是的,你可以。当JVM查看与您的主方法相匹配且逻辑合理的方法声明时,它足够智能地知道要加载哪个方法。当您像“jvm”一样思考并描绘出主方法的作用(启动应用程序)时,主方法声明的各个部分非常有意义:

    • public ,因为此方法必须可由JVM访问(而不是由您编写)。
    • static ,这意味着可以在没有对象的情况下访问此方法(因为它的表示永远不会更改),但如果您再次像JVM那样思考,则很容易理解逻辑;“我没有任何对象来创建(实例化)对象,因此我需要一个静态方法来启动应用程序,因为没有任何逻辑方法来获取实例。具体的方法还没有,因为我还没有任何东西来创建对象”。
    • void 此方法在逻辑上无法返回任何内容,因为没有任何内容要返回。它是应用程序的起点。
    • main 我是主要的方法,因为没有我你就没有申请。
    • String[] args 给我发一些你觉得对我的创业有用的数据。