为什么 Java 中的 main 函数驻留在 class 中?

Why does the main function in Java reside in a class?

我刚开始学习Java。而程序的主要功能总是驻留在class中。

public class t{
  public static void main(String[] args){
  // do stuff
  }
}

我学过C++,里面的main函数不需要在class里面。为什么在 Java 我们必须这样做?

为什么 Java 中的 main 函数不能像在 C++ 中那样没有 class?

可能出于与您在问题末尾加问号相同的原因:这就是他们决定完成的方式。

main 方法是约定俗成的 "this is how the entry point's method signature should look" 的结果,该约定并未将其从语言语义中排除。

Java 不支持 classes/interfaces 之外的方法,因此它必须包含在其中。

因为这就是语言的设计方式。 JVM首先加载包含main函数的class,然后调用main()方法。如果不加载 class,main() 将无法调用,即 main() 没有它的 封闭 class.

  1. 所有方法必须驻留在 Java 中的 class 中。
  2. main是一种方法。

因此,main 必须位于 class。

此外,class不仅仅是一个对象的蓝图。它本身就是一段代码,可以做某事。它所做的其中一件事是通过包含 main 方法来提供应用程序的入口点。

因为所有东西都在class里面Java。 Java 代码仅由 class 组成。它们可以嵌套在自身或包层次结构中,但不允许出现在 class.

之外

唯一的例外是 packageimport 语句。

"every method in Java must be in a class because the spec says so" 答案只是故事的一部分。通过将 main() 放在 class 中,可以在一个项目中有多个入口点。即多个 classes 与 main() 方法。这允许您在 运行 时间而不是编译时间 select 一个不同的主程序 class。例如

java -cp program.jar com.example.Class1

或者如果你想 运行 来自同一个罐子的不同主

java -cp program.jar com.example.Class2

让我们考虑在 java

中允许以下内容
void main (){
  f1();
  f2();

}
int f1(){
  f2();
  return 1;
}
int f2(){
   return 3;
}

由于 java 中没有原型,main 如何调用 f1 或 f2 或者 f1 如何调用 f2? 我认为这是原因之一

因为 java 是 oop 语言,除非你创建一个 class,否则你什么也做不了。这使得 java 面向对象的语言。并且 java 被设计为首先加载 public class 并调用主要方法