我正在准备一个非常基础/初学者的 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;
}
}
public static void main(String[] args)方法是标准 Java 应用程序的入口点。如果您想从命令行运行该方法,则至少需要一个具有此方法的类。在某些特殊情况下,如果 JAR 是以某种方式添加到将使用它的另一个应用程序的库或包,则您可以构建没有此类入口点的 JAR。但你现在不想讨论这个细节。
你看到的例子可能就是这样。例子。它们缺乏入口点,因为它们不是完整的应用程序。您的教授上传的代码只是一个类。无法执行。这只是展示课程的一种方式。
main()
方法。它并不总是在您自己的代码中。如果您使用的是 Java 框架,则
main()
可能位于框架代码中,而不是您自己的代码中。您的代码中还可以有多个
main()
方法,但只有一个方法会用作程序特定运行的入口点。每次运行 Java 程序时,您都在运行一个
main()
方法来启动程序。
尝试涵盖基本概念:
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类中找不到Main方法,请将main方法定义为:
公共静态无效主(字符串[] args)