Java程序中是否存在两种主要方法?

Java程序中可以存在两种主要方法吗?

只有通过他们的论点的差异,如:

public static void main(String[] args)

秒可以是

public static void main(StringSecond[] args)

如果可能,将使用哪种方法作为入口点?如何识别?


答案 1

在这里,您可以看到单个文件中有 2 个具有该名称(特别是没有使用 file 的名称作为 2 个类名称中的任何一个),并且 2 个类具有默认访问说明符。public static void main (String args[])Test.java

class Sum {

    int add(int a, int b) {
        return (a+b);   
    }

    public static void main (String args[]) {
        System.out.println(" using Sum class");
        Sum a = new Sum();
        System.out.println("Sum is :" + a.add(5, 10));
    }

    public static void main (int i) {
        System.out.println(" Using Sum class main function with integer argument");
        Sum a = new Sum();
        System.out.println("Sum is :" + a.add(20, 10));
    }
}

class DefClass {

    public static void main (String args[]) {
        System.out.println(" using DefClass");
        Sum a = new Sum();
        System.out.println("Sum is :" + a.add(5, 10));
        Sum.main(null);
        Sum.main(1);
    }
}

当我们编译代码Test时.java它将生成2个文件(viz和),如果我们运行Test.java则无法运行它,因为它找不到任何名为Test的主类。相反,如果我们这样做或两者都将使用不同的.要使用 Sum 类的主方法,我们可以使用类名 或 ..classSum.classDefClass.classjava Sumjava DefClassmain()Sum.main(null)Sum.main(1)//Passing integer value in the DefClass main()

在类作用域中,每个类只能有一个,因为类的静态方法属于类而不是其对象,并且使用其类名调用。即使我们创建多个对象并使用它们调用相同的静态方法,这些调用将引用的静态方法的实例也将是相同的。public static void main (String args[])

我们还可以通过在main中传递不同的参数集来重载main方法。上面的代码中提供了类似的示例,但默认情况下,控制流将从我们使用 调用的类文件开始。要使用其他参数集调用 main 方法,我们必须从其他类显式调用它。public static void main (String args[])java classname


答案 2

只要方法参数(数字(或)类型)不同,就可以。它称为重载

重载方法通过传递到方法中的参数的数量和类型进行区分

public static void main(String[] args)

只有以单个(或)作为参数的main方法才会被视为程序的入口点。String[]String...