我们可以重载Java中的main方法吗?

时间:2010-09-21 10:18:04

标签: java

我们可以在Java中重载main()方法吗?

14 个答案:

答案 0 :(得分:117)

可以重载main()方法,但是当你的类由JVM启动时,只会使用public static void main(String[] args)。例如:

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

    public static void main(String arg1) {
        System.out.println("main(String arg1)");
    }

    public static void main(String arg1, String arg2) {
        System.out.println("main(String arg1, String arg2)");
    }
}

当您从命令行运行main(String[] args)时,总是打印java Test ...,即使您指定了一个或两个命令行参数。

当然,您可以自己从代码中调用main()方法 - 此时将应用正常的重载规则。

编辑:请注意,您可以使用varargs签名,因为从JVM的角度来看,这是等效的:

public static void main(String... args)

答案 1 :(得分:14)

是的,您可以在Java中重载main方法。但是程序在运行程序时不执行重载的main方法,你必须从实际的main方法调用重载的main方法。

这意味着main方法充当java解释器的入口点以开始执行应用程序。 需要从main调用加载的main。

答案 2 :(得分:4)

是的,通过方法重载。您可以通过方法重载在类中包含任意数量的主方法。让我们看一个简单的例子:

class Simple{  
  public static void main(int a){  
  System.out.println(a);  
  }  

  public static void main(String args[]){  
  System.out.println("main() method invoked");  
  main(10);  
  }  
}  

它将提供以下输出:

main() method invoked
10

答案 3 :(得分:3)

是,您可以重载main()

但要明确 - 虽然您可以重载main,但只有具有标准签名的版本才能从命令行作为应用程序执行。 e.g

0xFFFF_FFE3

答案 4 :(得分:2)

是的,您可以在Java中重载main方法。你必须从实际的main方法中调用重载的main方法。

答案 5 :(得分:2)

是的,你可以。

Java中的main方法不是外星方法。除了main()就像任何其他方法一样,&可以以类似的方式重载,JVM总是查找方法签名以启动程序。

  • 正常main方法充当JVM启动的入口点 程序的执行。

  • 我们可以在Java中重载main方法。但该计划没有 我们运行你的程序时执行重载的main方法,我们需要 仅从实际的main方法调用重载的main方法。

    // A Java program with overloaded main()
    import java.io.*;     
    public class Test {         
      // Normal main()
      public static void main(String[] args) {
        System.out.println("Hi Geek (from main)");
        Test.main("Geek");
      }     
      // Overloaded main methods
      public static void main(String arg1) {
        System.out.println("Hi, " + arg1);
        Test.main("Dear Geek","My Geek");
      }
      public static void main(String arg1, String arg2) {
        System.out.println("Hi, " + arg1 + ", " + arg2);
      }
    }
    

    Valid variants of main() in Java

答案 6 :(得分:1)

是的,我们可以重载main方法。 main方法一定不能是静态main方法。

答案 7 :(得分:1)

是的,main方法可以重载。必须从“public static void main(String args [])”内部调用重载的main方法,因为这是JVM启动类时的入口点。同样重载的main方法可以有任何限定符作为普通方法。

答案 8 :(得分:1)

这是完全合法的:

public static void main(String[] args) {

}

public static void main(String argv) {
    System.out.println("hello");
}

答案 9 :(得分:1)

是。 ' main()'方法可以重载。我试图输入一些代码来回答你的问题。

public class Test{
static public void main( String [] args )
        {
                System.out.println( "In the JVMs static main" );
                main( 5, 6, 7 );    //Calling overloaded static main method
                Test t = new Test( );
                String [] message  = { "Subhash", "Loves", "Programming" };
                t.main(5);
                t.main( 6, message );
        }

        public static void main( int ... args )
        {
                System.out.println( "In the static main called by JVM's main" );
                for( int val : args )
                {
                        System.out.println( val );
                }
        }

        public void main( int x )
        {
                System.out.println( "1: In the overloaded  non-static main with int with value " + x );
        }

        public void main( int x, String [] args )
        {
                System.out.println( "2: In the overloaded  non-static main with int with value " + x );
                for ( String val : args )
                {
                        System.out.println( val );
                }
        }
}

输出:

$ java Test
In the JVMs static main
In the static main called by JVM's main
5
6
7
1: In the overloaded  non-static main with int with value 5
2: In the overloaded  non-static main with int with value 6
Subhash
Loves
Programming
$

在上面的代码中,静态方法以及主要方法的非静态版本都被重载以用于演示目的。请注意,通过编写JVMs main,我的意思是说,它是JVM首先用于执行程序的主要方法。

答案 10 :(得分:1)

是的,你可以重载main方法但是解释器总是会搜索正确的main方法语法来开始执行.. 是的,你必须在对象的帮助下调用重载的main方法。

class Sample{
public void main(int a,int b){
System.out.println("The value of a is "  +a);
}
public static void main(String args[]){
System.out.println("We r in main method");
Sample obj=new Sample();
obj.main(5,4);
main(3);
}
public static void main(int c){
System.out.println("The value of c  is"  +c);
}
}

The output of the program is:
We r in main method
The value of a is 5
The value of c is 3

答案 11 :(得分:1)

是的,主方法可以重载,因为其他函数可以重载。需要注意的是,应该至少有一个主函数“ String args [] < / strong>“作为参数。并且程序中可以有不同的参数和功能的任何数量的主函数。让我们通过一个简单的例子来理解:

Class A{

public static void main(String[] args)
{
System.out.println("This is the main function ");
A object= new A();
object.main("Hi this is overloaded function");//Calling the main function
}

public static void main(String argu)     //duplicate main function
{
System.out.println("main(String argu)");
}
}

输出: 这是主要功能
嗨,这是重载功能

答案 12 :(得分:1)

是根据我的观点,我们能够重载主方法,但方法重载它的方法。例如

class main_overload {
    public static void main(int a) {
        System.out.println(a);
    }
    public static void main(String args[]) {
        System.out.println("That's My Main Function");
        main(100);
    }
}

在这个Double Back斜杠步骤中,我只是调用主方法....

答案 13 :(得分:0)

是的,您可以重载主方法,但应该只有一个签名为public static void main(string args[])

的方法
package rh1;

public class someClass 
{

    public static void main(String... args)
    {
        System.out.println("Hello world");

        main("d");
        main(10);
    }
    public static void main(int s)
    {

        System.out.println("Beautiful world");
    }
    public static void main(String s)
    {
        System.out.println("Bye world");
    }
}