问题描述
我正在为一个非常基础/初学者的Java考试进行学习,并且在查看一些示例代码时,我注意到有一对不包含该方法的夫妇:public static void main(String [] args)
这怎么可能?有什么我想念的吗?
public class Student {
int midtermExam;
int finalExam;
double calcAvg() {
double returnValue;
returnValue = (midtermExam + finalExam) / 2.0;
return returnValue;
}
char getLetterGrade() {
char grade;
double avg = (midtermExam + finalExam) / 2.0;
// double avg = calcAvg();
if (avg >= 90)
grade = 'A';
else
if (avg >= 80)
grade = 'B';
else
if (avg >= 70)
grade = 'C';
else
grade = 'F';
return grade;
}
}
解决方法
在某处总是必须有一个main()
方法。它并不总是在您自己的代码中。如果您使用的是Java框架,则main()
可能在框架代码中,而不是您自己的代码中。您的代码中也可以有多个main()
方法,但是只有一种方法可以用作特定运行的程序入口点。每次您运行Java程序时,您实际上都在运行一种main()
方法来启动该程序。
公共静态void main(String [] args)方法是标准Java应用程序的入口点。如果要从命令行运行它,则至少需要一个使用此方法的类。在某些特殊情况下,如果JAR是将以某种方式添加到将使用它的另一个应用程序中的库或包,则可以在不具有此类入口点的情况下构建JAR。但是,您现在不想赘述。
您看到的示例可能就是这样。例子。而且它们缺少切入点,因为它们不是完整的应用程序。您的教授上传的代码只是一个班级。无法执行。这只是显示课程的一种方式。
,如果您使用的是Java 9+,则主要方法是JShell。
这是一个交互式工具,可让您使用终端/ cmd评估代码。 也称为读取-评估-打印循环(REPL),在输入声明,语句和表达式时对其进行评估,并立即显示结果。
在官方文档https://docs.oracle.com/javase/9/jshell/introduction-jshell.htm
中有很好的解释当我想测试或探索Java新功能时,我发现它很有用。
,试图涵盖基本概念:
1)JAVA程序包含任意数量的类,但是最多可以将一个类声明为public。
2)如果存在公共类,则程序名称和公共类名称必须匹配,否则会出现编译时错误。
3)Main()方法与JAVA文件的名称没有关系。
编写没有main()方法的类时。它将编译正常。
但是当您运行代码时,它将给出错误: NoSuchMethodError:主要
示例:
Test.java
class A(){
public static void main(String args[]){
System.out.println("In class Main : A");
}
}
class B(){
public static void main(String args[]){
System.out.println("In class Main : B");
}
}
class C(){
public static void main(String args[]){
System.out.println("In class Main : C");
}
class D(){
}
--------------------------------
Javac Test.java
--> No Compile Time Error you will get
Java A
o/p : In class Main A
Java B
o/p : In class Main B
Java C
o/p : In class Main C
Java D
o/p : NoSuchMethodError : main
Java Test
o/p : NoClassdefFoundError : Test
--> Run Time error you will get.
创建JAR文件或任何内置软件包时。不需要main()方法,因为您导入了包或.Jar文件,并在工作类中调用了这些method()。
当您运行应用程序并想要自动获取输出时。 public static void main(String[] args)
方法是签名,编译器在其中找到程序的入口点。
您的教授上传的代码只是一个班级。它将编译正常。 从上面的代码中,您可以在同一文件中有许多main()方法。但是您必须运行特定的类。
尝试运行Student类:您将得到一个错误:Student类中找不到主要方法,请将该主要方法定义为:
公共静态void main(String [] args)