【发布时间】:2010-09-21 10:18:03
【问题描述】:
我们可以在 Java 中重载 main() 方法吗?
【问题讨论】:
-
为什么要重载 main() 方法。如果您想要不同的启动行为,您可以使用 main() 创建任意数量的类。只需在调用 jar 时声明主类。或者你可以添加一些额外的参数,当你的 main 启动时测试它会影响它的作用。
标签: java
我们可以在 Java 中重载 main() 方法吗?
【问题讨论】:
标签: java
您可以重载main() 方法,但只有public static void main(String[] args) 会在JVM 启动您的类时使用。例如:
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)");
}
}
当您从命令行运行java Test ... 时,这将始终打印main(String[] args),即使您指定了一个或两个命令行参数。
当然,您可以自己从代码中调用main() 方法 - 此时将应用正常的重载规则。
编辑:请注意,您可以使用可变参数签名,因为从 JVM 的角度来看这是等效的:
public static void main(String... args)
【讨论】:
main()。
String[]。这是被识别为入口点的 only 签名。
main 方法也可以直接从其他代码中调用,所以这样的重载并不是不可访问的。
是的,您可以在 Java 中重载 main 方法。但是程序在运行时不会执行重载的main方法,你必须从实际的main方法中调用重载的main方法。
这意味着 main 方法充当 java 解释器开始执行应用程序的入口点。 其中作为加载的 main 需要从 main 调用。
【讨论】:
是的,通过方法重载。通过方法重载,您可以在一个类中拥有任意数量的主要方法。让我们看一个简单的例子:
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
【讨论】:
是的,你可以重载 main()
但要清楚—— 尽管您可以重载 main,但只有具有 标准签名 的版本才能作为应用程序从命令行执行。例如
public static void main(String a,String... args){
// some code
}
2)public static void main(String[] args){//JVM will call this method to start
// some code
}
【讨论】:
是的,您可以在 Java 中重载 main 方法。您必须从实际的 main 方法调用重载的 main 方法。
【讨论】:
是的,main 方法可以重载。重载的 main 方法必须从“public static void main(String args[])”内部调用,因为这是 JVM 启动类时的入口点。重载的 main 方法也可以像普通方法一样具有任何限定符。
【讨论】:
是的,你可以。
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);
}
}
【讨论】:
是的,我们可以重载 main 方法。 main 方法不能是静态的 main 方法。
【讨论】:
这是完全合法的:
public static void main(String[] args) {
}
public static void main(String argv) {
System.out.println("hello");
}
【讨论】:
是的。 '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
$
在上面的代码中,为了演示目的,静态方法和非静态版本的主要方法都被重载了。注意,写JVM的main是指JVM首先用来执行程序的main方法。
【讨论】:
是的,你可以重载 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
【讨论】:
是的,根据我的观点,我们可以重载 main 方法,但方法重载就是这样。例如
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);
}
}
在这个双反斜杠步骤中,我只是调用了 main 方法....
【讨论】:
是的,主方法可以重载,因为其他函数也可以重载。需要注意的一点是,至少应该有一个主函数带有“String args[]”作为参数。您的程序中可以有任意数量的主函数,具有不同的参数和功能。让我们通过一个简单的例子来理解:
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)");
}
}
输出:
这是主要功能
嗨,这是重载函数
【讨论】:
是的,您可以重载 main 方法,但在任何类中,都应该只有一个带有签名 public static void main(string args[]) 的方法,您的应用程序在该方法中开始执行,正如我们所知,在任何语言中,执行都从 Main 方法开始。
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");
}
}
【讨论】: