Java main() 方法2025年7月21日 | 阅读 7 分钟 在 Java 中,main() 方法是任何独立 Java 应用程序的关键入口点。当 Java 程序运行时,Java 虚拟机 (JVM) 会查找 main() 方法来启动执行。此方法必须遵循严格的签名才能被 JVM 识别。没有 main() 方法,JVM 将不会执行程序。理解 main() 方法对任何 Java 开发人员来说都至关重要,因为它充当了程序与 JVM 提供的底层执行环境之间的链接。 语法 ![]() 在 Java 程序中使用 main() 方法示例编译并运行输出 Hello, World! public: 这是一个访问修饰符。我们应该始终将 main() 方法声明为 public,因为 JVM 可以识别程序的执行点。如果我们使用 private、protected 和 default 在 main() 方法之前,它将对 JVM 不可见。例如,请看以下 Java 程序。 示例输出 Error: Main method not found in class Main, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application static: 我们可以使用 static 关键字使方法成为静态的。我们应该在不创建对象的情况下调用 main() 方法。静态方法是不需要创建对象即可调用的方法,因此我们不需要任何对象来调用 main() 方法。 如果我们尝试运行 main() 方法不是静态的 Java 代码,我们会收到错误。例如,请看以下 Java 程序。 示例输出 Error: Main method is not static in class Main, please define the main method as: public static void main(String[] args) void: 在 Java 中,每个方法都有一个返回类型。void 关键字告知编译器 main() 方法不返回任何值。如果我们指定 void 以外的返回类型,如 int,我们会收到错误。例如,请看以下 Java 程序。 示例输出 Error: Main method must return a value of type void in class Main, please define the main method as: public static void main(String[] args) main(): 这是 JVM 中预定义的默认签名。JVM 调用它来逐行执行程序,并在该方法完成后结束执行。我们也可以重载 main() 方法。 如果我们改变启动 main 方法时的名称,我们会收到错误。例如,请看以下 Java 程序。 示例输出 Error: Main method not found in class Main, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application String args[]: main() 方法还接受用户的一些数据。它接受一组字符串,称为字符串数组。它用于以字符串值的形式保存命令行参数。 这里,agrs[] 是数组名,它是 String 类型。这意味着它可以存储一组字符串。请记住,此数组也可以存储一组数字,但仅以字符串的形式。传递给 main() 方法的值称为参数。这些参数存储在 args[] 数组中,因此通常使用 args[] 这个名称。 示例编译并运行输出 ![]() 如果 main() 方法在没有 String args[] 的情况下编写会怎样?程序编译通过,但无法运行,因为 JVM 不识别 main() 方法。请记住,JVM 始终查找带有字符串类型数组作为参数的 main() 方法。 执行过程首先,JVM 执行静态块,然后执行静态方法,然后创建程序所需的 对象。最后,执行实例方法。JVM 以最高优先级执行静态块。这意味着 JVM 在查找程序中的 main() 方法之前,会先查看静态块。 示例编译并运行输出 Static block Static method 我们观察到 JVM 首先执行静态块(如果程序中存在)。之后,它会搜索 main() 方法。如果找不到 main() 方法,它会报错。 示例 不包含 main() 方法的程序会在运行时报错。 示例输出 Error: Main method not found in class Main, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application 因此,main() 方法应始终这样编写: 我们可以互换 public 和 static 的顺序,写成如下形式: 我们也可以为 String 类型数组使用其他名称,写成如下形式: 编写 main() 方法的不同方式有: String...args: 它允许方法接受零个或多个参数。String 和数组之间必须有三个点,否则会报错。 没有 main() 方法的 Java 程序从 JDK 7 开始,无法直接执行没有 main() 方法的独立 Java 程序。Java 虚拟机 (JVM) 会专门查找 public static void main(String[] args) 方法作为程序执行的入口点。如果找不到此方法,JVM 将报告一个错误,指示其缺失。 在 JDK 7 之前,可以通过将代码放在 static 初始化块中来实现不带 main() 方法的某些执行。这些块在类加载时执行,通常在 main() 方法被调用之前。 然而,即使在这种情况下,除非在静态块中显式调用 System.exit(0) 来阻止,否则程序在静态块执行完成后仍会以“未找到 main() 方法”的错误终止。 示例输出 Main.java:1: error: package javafx.application does not exist abstract class Main extends javafx.application.Application 注意:如果要执行上述 Java 程序,请在 JDK 7 或更早版本上运行。重载 main() 方法我们也可以重载 main() 方法。我们可以在类中定义任意数量的 main() 方法,但方法签名必须不同。 示例编译并运行输出 The main() method invoked 6 Java main() 方法选择题1. Java 中 main() 方法的正确签名是什么?
答案:b) 解释: JVM 查找 public static void main(String[] args) 作为入口点。选项 c 也是有效的(修饰符的顺序无关紧要),但 b 是约定俗成的形式。 2. 为什么 main() 方法声明为 static?
答案:b) 解释: 将 main() 声明为 static 允许 JVM 直接调用它,而无需实例化该类,这对于程序启动至关重要。 3. 如果 main() 方法不是 public 会怎样?
答案:d) 解释: JVM 需要从类外部访问 main()。如果它不是 public,就会导致运行时错误:未找到 main 方法。 4. 以下关于 main() 中的 String[] args 的说法哪个是正确的?
答案:a) 解释: String[] args 包含命令行参数。args 这个名称是惯例,但不是强制性的。 5. Java 中的 main() 方法可以重载吗?
答案:c) 解释: 我们可以使用不同的参数列表重载 main(),但只有标准签名会被 JVM 用于启动执行。 下一个主题Java 教程 |
超级巨星困境是计算机科学中,特别是在算法问题解决领域中经常遇到的经典难题。这个问题可以概括如下。假设有一个有 N 个人的聚会。“名人”意味着每个人都知道某个人,但没有人知道其他人。目标是...
5 分钟阅读
Java 中的 power 函数是 Math.pow()。它用于获取第一个参数的第二个参数的幂。它接受两个参数并返回第一个参数的第二个参数的幂。它返回一个 double 类型的值。pow()...
7 分钟阅读
在编程中,片段(snippet)是一段代码,它用几行代码解决很多问题。同时,它减少了代码行数,并使程序员更具知识。在本节中,我们将讨论 Java 中的片段是什么,它的用途,...
5 分钟阅读
Java 提供了许多方法调用来检查和更改文件的权限,例如将只读文件更改为具有写入权限。当用户想要限制或修改允许的操作时,需要更改文件权限...
5 分钟阅读
这是 Google、Amazon、TCS、Accenture 等顶级 IT 公司面试中经常遇到的问题。通过解决问题,人们希望检查面试者的逻辑能力、批判性思维和解决问题的能力。因此,在本节中,我们将解决...
阅读 6 分钟
Java 中的最小回文问题,给定一个表示整数的字符串 n,我们的任务是找到回文数并返回最接近的整数(不包括它本身)。如果存在平局,则返回较小的那个。绝对差值...
阅读9分钟
目前,Java 被许多科技巨头广泛使用。科技巨头定期聘请 Java 开发人员以满足市场需求。作为回报,公司提供丰厚的薪资待遇和诱人的福利。在本节中,我们将讨论角色...
阅读 6 分钟
javax.naming.CompositeName 包含 getAll() 函数。整个复合对象的组件集以字符串枚举的形式返回,使用 CompositeName 类。此枚举的更新效果对该复合名称的影响未定义。语法:public Enumeration getAll() 参数:方法...
阅读 2 分钟
AWT 代表抽象窗口工具包,它是一个用于在 Java 中创建图形用户界面 (GUI) 的应用程序编程接口 (API)。它允许 Java 程序员开发基于窗口的应用程序。AWT 提供了按钮、标签、复选框等各种组件,它们在 Java 程序中用作对象。AWT 组件使用...
阅读 3 分钟
Java Runnable 接口 Java runnable 是一个用于在并发线程上执行代码的接口。它是一个接口,如果我们希望该类的实例由线程执行,则该类需要实现该接口。Runnable 接口有一个未定义的...方法。
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India