Java main()方法

本文概述

  • 如果main()方法编写时没有String args [], 会发生什么情况?
  • main()方法的重载
main()是JVM开始执行Java程序的起点。没有main()方法, JVM将不会执行程序。 main()方法的语法为:
Java main()方法

文章图片
public:它是一个访问说明符。我们应该在main()方法之前使用公共关键字, 以便JVM可以识别程序的执行点。如果我们在main()方法之前使用private, protected和default, 则它对JVM不可见。
静态:你可以使用关键字“静态”将方法设为静态。我们应该在不创建对象的情况下调用main()方法。静态方法是在不创建对象的情况下调用的方法, 因此我们不需要任何对象即可调用main()方法。
void:在Java中, 每个方法都有返回类型。 Void关键字确认编译器main()方法不返回任何值。
main():这是在JVM中预定义的默认签名。 JVM调用它来逐行执行程序, 并在此方法完成后结束执行。我们还可以重载main()方法。
字符串args []:main()方法还接受用户的一些数据。它接受一组字符串, 称为字符串数组。它用于以字符串值的形式保存命令行参数。
main(String args[])

在这里, agrs []是数组名, 它是String类型的。这意味着它可以存储一组字符串。请记住, 该数组还可以存储一组数字, 但只能以字符串形式存储。传递给main()方法的值称为参数。这些参数存储在args []数组中, 因此通常使用名称args []。
如果main()方法编写时没有String args [], 会发生什么情况? 该程序将编译, 但不会运行, 因为JVM无法识别main()方法。请记住, JVM总是使用字符串类型数组作为参数来寻找main()方法。
执行过程
首先, JVM执行静态块, 然后执行静态方法, 然后创建程序所需的对象。最后, 它执行实例方法。 JVM在最高优先级的基础上执行静态块。这意味着JVM甚至在它在程序中寻找main()方法之前都先进入静态块。

classDemo{static//static block{System.out.println("Static block"); }public static void main(String args[]) //static method{System.out.println("Static method"); }}

输出:
Static blockStatic method

我们观察到JVM首先执行静态块(如果程序中存在静态块)。之后, 它将搜索main()方法。如果未找到main()方法, 则会产生错误。

不具有main()方法的程序在运行时给出错误。
class DemoStaticBlock{Static//static block{System.out.println("Static block"); }}

输出:
Error: Main method not found in the class Demo, 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 void main(String args[])

我们可以将public和static互换并编写如下:
static public void main(String args[])

我们还可以为String类型数组使用其他名称, 并将其写为:
static public void main(String[] x)

编写main()方法的不同方法是:
static public void main(String []x)static public void main(String...args)

String … args:它允许方法接受零个或多个参数。 String和array之间应该恰好有三个点;否则, 将产生错误。

没有main()方法, 但是可以编译并成功运行的程序。
abstract class DemoNoMain extends javafx.application.Application{static//static block{System.out.println("Java"); System.exit(0); }}

输出:
Java

main()方法的重载 我们还可以重载main()方法。我们可以在类中定义任意数量的main()方法, 但是方法签名必须不同。

class OverloadMain{public static void main(int a) //overloaded main method{System.out.println(a); }public static void main(String args[]){ System.out.println("main method incoked"); main(6); }}

【Java main()方法】输出:
main method invoked6

    推荐阅读