我在其中一项认证考试中看到了这段代码:
public class SimpleClass
{
int num;
final static void main(final String args[])
{
String s1="new";
String s2="String";
String s3="Creation";
System.out.println(s1+s2+s3);
}
}
我知道最后的方法是无法覆盖的方法。我也知道如果main
方法的通常签名被更改,它将被JVM视为任何其他普通方法,而不是main()
。
但是,给我的选项是:
1> Code won't compile
2> Code will throw an exception
3> will print newStringCreation.
在eclipse IDE上运行此程序是不可能的。任何人都可以解释应该是什么答案以及为什么?
好的,让我提出这样的问题 - 当我执行我的程序时,会发生什么?我应该选择以上3个选项中的哪一个?
答案 0 :(得分:10)
final static void main
不会运行,因为main不公开。
public final static void main
将有效。
至少是Eclipse IDE上的行为。
答案 1 :(得分:7)
代码将编译没有任何问题,但它会抛出一个运行时异常,说“主要方法不公开”。 main方法必须是公共的,因为它必须由JVM调用,它不在包的范围内,因此需要访问说明符-public。如果您无法在eclipse中运行它,请尝试使用filename.java将文件保存在记事本中的古老方法。转到cmd并到达文件位置。如果在桌面上,请使用cd桌面!使用以下命令运行文件 -
javac filename.java
java filename
您将看到我上面提到的所需的运行时异常。
答案 2 :(得分:4)
必须可以从外部访问main
方法。因此,在您的情况下,应用程序将编译但在运行时抛出执行。
答案 3 :(得分:-1)
你有main方法,但由于修饰符是最终的,JVM将无法运行程序的main方法。你不会看到任何编译错误。
当您将修改器最终更改为公开
时,您可以在eclipse中运行该程序