在这篇文章中,我们将讨论经常被问到的Java main()
方法面试问题及答案,供应届生和有经验者参考。
我们知道,Javamain()
方法是任何Java程序的入口。它的语法总是public static void main(String[] args)。
我们将讨论以下8个Java main()面试问题和答案。
我将用实例来证明上述所有问题。
首先,我们来看看为什么main()方法在Java中是静态的?main()方法在Java中是静态的,所以JVM可以直接调用它而不需要实例化类的对象。
如果main()方法是非静态的,那么JVM就需要创建一个类的实例,如果该类的构造函数需要一个参数,就会产生歧义--JVM应该调用哪个构造函数,应该传递哪些参数?我们知道,如果不调用一个构造函数方法,JVM就不能实例化一个Java类。
下面的例子说明了为什么main()方法在Java中是静态的?
package net.javaguides.corejava;
public class MainMethodDemo {
public MainMethodDemo(int arg0) {
//One argument constructor
}
public MainMethodDemo(int arg0, int arg1) {
//Two arguments constructor
}
public MainMethodDemo(String arg[]) {
}
public void main(String...args) {
//Non Static main method
}
}
现在,让我们看看为什么main()方法是公共的?
我们知道,任何人都可以访问/调用具有public
访问指定符的方法。在Java中,main()方法是公开的,因为它必须被JVM调用。所以,如果main()在Java中不是公共的,JVM就不会调用它。
是的,我们可以重载main()
方法。一个Java类可以有任意数量的main()
方法。但要运行java类,该类应该有一个main()
方法,其签名为public static void main(String[] args)。
下图显示了main()
method可以被重载。
让我们看一个简单的例子来证明main()
可以被重载。
package net.javaguides.corejava;
import java.util.Arrays;
public class MainMethodDemo {
/** Actual main method with String[] args**/
public static void main(String[] args) {
System.out.println("String[] args main method called");
main(new Double[] {
1.0,
2.0,
3.0
});
}
/** Overloaded main method with Double[] args**/
public static void main(Double[] args) {
System.out.println("Double[] args main method called");
System.out.println(Arrays.toString(args));
}
}
输出。
String[] args main method called
Double[] args main method called
[1.0, 2.0, 3.0]
不行,main()
方法必须是公共的。你不能把main()
方法定义为私有的或受保护的**或没有访问修饰符。这是因为要使main()
方法能够被JVM访问。
下图显示了运行时的错误,如果你将main()
方法定义为public以外的方法。
不可以,main()
方法必须被声明为static,这样JVM就可以调用main()
方法而不需要实例化其类。如果你把main()
方法签名中的 "static "去掉,编译就会成功,但程序在运行时就会失败。
下图展示了main()
方法应该是静态的,否则JVM会抛出运行时错误。
不能,main()
方法的返回类型必须是void。任何其他类型都是不能接受的。
下图展示了main()
方法应该有一个void的返回类型。
不能,main()
方法的参数必须是一个字符串数组。但是,从var args的引入来看,可以将字符串类型的var args作为参数传给main()
方法。同样,var args也不过是数组。
下图显示了main()
方法的参数应该是字符串数组或var args。
不能,从Java 7开始,我们不能在没有main()
方法的情况下定义一个类。在以前的Java版本中,我们可以用Static Initializers
作为替代。
public class MainMethodDemo
{
static
{
System.out.println("Static Initalizer");
System.exit(0);
}
}
输出。(从JDK 7开始)
Error: Main method not found in class Test, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
输出结果。(JDK 6)
Static Initalizer
是的,你可以把main()方法变成final。
下图展示了我们可以在Java中把main()方法设为final。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.javaguides.net/2018/10/java-main-method-interview-questions-with-answers.html
内容来源于网络,如有侵权,请联系作者删除!