joe*_*han 29 java methods program-entry-point arguments
Java程序中是否存在两种主要方法?只有他们的论点不同,如:
public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)
第二个可以
public static void main(StringSecond[] args)
Run Code Online (Sandbox Code Playgroud)
如果可能,哪个方法将用作入口点?怎么识别这个?请帮忙.
kos*_*osa 26
只要方法参数(数字(或)类型)不同,是的,它们就可以.它被称为重载.
重载方法由传递给方法的参数的数量和类型区分
public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)
只有使用单个String[](或)String...作为param的main方法才会被视为程序的入口点.
小智 25
在这里,您可以看到public static void main (String args[])单个文件中有2 个名称Test.java(特别是没有使用文件名作为2个类名称之一),2个类具有默认访问说明符.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
当我们编译代码Test.java时,它将生成2个.class文件(即Sum.class和DefClass.class),如果我们运行Test.java,我们就无法运行它,因为它找不到任何名为Test的主类.相反,如果我们这样做java Sum或java DefClass两者都会使用不同的输出main().要使用Sum类的main方法,我们可以使用类名Sum.main(null)或Sum.main(1)//Passing integer value in the DefClass main().
在类范围中,public static void main (String args[])每个类只能有一个,因为类的静态方法属于类而不属于其对象,并且使用其类名调用.即使我们创建多个对象并使用它们调用相同的静态方法,那么这些调用将引用的静态方法的实例也是相同的.
我们也可以通过在main中传递不同的参数集来重载main方法.上面的代码中提供了类似的示例,但默认情况下,控制流将从public static void main (String args[])我们使用的类文件开始java classname.要使用其他参数集调用main方法,我们必须从其他类中显式调用它.
小智 7
单个程序中可以有多个主要方法.其他是重载方法.这个重载方法在单个main方法下工作正常
public class MainMultiple{
public static void main(String args[]){
main(122);
main('f');
main("hello java");
}
public static void main(int i){
System.out.println("Overloaded main()"+i);
}
public static void main(char i){
System.out.println("Overloaded main()"+i);
}
public static void main(String str){
System.out.println("Overloaded main()"+str);
}
}
Run Code Online (Sandbox Code Playgroud)
那将是可编译的代码,只要StringSecond是一个类.但是,如果通过"主要方法"表示进入该计划的第二个入口点,那么您的问题的答案仍然是否定的.只有第一个选项(public static void main(String[] args))可以作为程序的入口点.
但请注意,如果您要将第二个main(String[])方法放在不同的类中(但在同一个项目中),您可以在项目中有多个可能的入口点,然后您可以从中选择.但这不能与覆盖或超载的原则相冲突.
另请注意,此领域中的一个混淆源,特别是对于介绍性程序员而言,是public static void main(String[] args)并且public static void main(String ... args)都被用作入口点并被视为具有相同的方法签名.
| 归档时间: |
|
| 查看次数: |
87038 次 |
| 最近记录: |