是否可以在没有公共静态void main(String[]args)的情况下编写Java代码?

是否可以在没有公共静态void main(String[]args)的情况下编写Java代码?,java,main,entry-point,public-method,Java,Main,Entry Point,Public Method,我正在准备一个非常基础/初学者的Java考试,在复习一些示例代码时,我注意到有两个没有包含该方法:publicstaticvoidmain(String[]args) 这怎么可能?我有什么遗漏吗 我的教授上传的示例代码示例(未使用该方法): public class Student { int midtermExam; int finalExam; double calcAvg() { double returnValue; returnValue = (mid

我正在准备一个非常基础/初学者的Java考试,在复习一些示例代码时,我注意到有两个没有包含该方法:publicstaticvoidmain(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()
方法来启动程序。

总有一个
main()
方法。它并不总是在您自己的代码中。如果您使用的是Java框架,
main()
可能位于框架代码中,而不是您自己的代码中。您的代码中也可以有多个
main()
方法,但只有一个方法会用作特定运行程序的入口点。每次运行Java程序时,都只运行一个
main()
方法来启动程序。

公共静态void main(String[]args)方法是标准Java应用程序的入口点。如果要从命令行运行此方法,至少需要一个类。在一些特殊情况下,如果JAR是一个库或一个将以某种方式添加到另一个将使用它的应用程序中的包,那么您可以在不使用这种入口点的情况下构建一个JAR。但你现在不想谈那个细节

你所看到的例子可能就是这样。例子。它们缺少入口点,因为它们不是完整的应用程序。你教授上传的代码只是一节课。它无法执行。它只是一种显示类的方式。

公共静态void main(String[]args)方法是标准Java应用程序的入口点。如果要从命令行运行此方法,至少需要一个类。在一些特殊情况下,如果JAR是一个库或一个将以某种方式添加到另一个将使用它的应用程序中的包,那么您可以在不使用这种入口点的情况下构建一个JAR。但你现在不想谈那个细节


你所看到的例子可能就是这样。例子。它们缺少入口点,因为它们不是完整的应用程序。你教授上传的代码只是一节课。它无法执行。这只是一种显示类的方式。

如果您使用的是Java 9+,那么您可以使用JShell作为主方法的替代方法

这是一个交互式工具,允许您使用终端/cmd就地计算代码。 也称为读取-计算-打印循环(REPL),在输入声明、语句和表达式时对其进行计算,并立即显示结果

这在官方文件中有很好的解释:


每当我想测试或探索一个新的Java特性时,我发现它都很有用。

如果您使用的是Java 9+,那么您可以从主方法中选择JShell

这是一个交互式工具,允许您使用终端/cmd就地计算代码。 也称为读取-计算-打印循环(REPL),在输入声明、语句和表达式时对其进行计算,并立即显示结果

这在官方文件中有很好的解释:


每当我想测试或探索一个新的Java特性时,我发现它都是有用的。

试图涵盖基本概念:

1) 一个JAVA程序包含任意数量的类,但最多有一个类可以声明为公共类

2) 如果存在公共类,那么程序名和公共类名必须进行匹配,否则会出现编译时错误

3) Main()方法与JAVA文件的名称之间没有关系

当您编写没有main()方法的类时。它会很好的

但当您运行代码时,它将给出错误: NoSuchMethodError:main

示例:

当您创建JAR文件或任何生成的包时。不需要main()方法,因为您导入包或.Jar文件,然后在工作类中调用这些方法()

当您运行应用程序并希望自动获取输出时。
publicstaticvoidmain(String[]args)
方法是编译器查找程序入口点的签名

你教授上传的代码只是一节课。它会很好的。 从上面的代码可以在同一个文件中有许多main()方法。但是你必须运行特定的类

尝试运行学生类:您将得到一个错误:在学生类中找不到主方法,请将主方法定义为:

publicstaticvoidmain(String[]args)
试图涵盖基本概念:

1) 一个JAVA程序包含任意数量的类,但最多有一个类可以声明为公共类

2) 如果存在公共类,那么程序名和公共类名必须进行匹配,否则会出现编译时错误

3) Main()方法与JAVA文件的名称之间没有关系

当您编写没有main()方法的类时。它会很好的

但当您运行代码时,它将给出错误: NoSuchMethodError:main

示例:

当您创建JAR文件或任何生成的包时。不需要main()方法,因为您导入包或.Jar文件,然后在工作类中调用这些方法()

当您运行应用程序并希望自动获取输出时。
publicstaticvoidmain(String[]args)
方法是编译器查找条目的签名
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.