Java Main方法

作者 | 2020年3月27日

一个Java程序由按顺序执行的一系列语句组成,由于Java按照特定的顺序执行这些语句,所以一个Java程序会有一个开始与结束位置。

在运行Java程序时你需要告知Java虚拟机从那里开始执行程序。在Java中所有的代码都位于一个类中,类是用于封装代码与数据的一种方法。因此一个类中可以同时包含变量与方法。一个变量可以存储数据,而一个方法则可以封装由多条语句组成的操作。
如果你此时完全不知道这一点,请不要担心,在后面的教程中将对此进行更详细的说明。

一个简单的类声明

声明一个没有任何变量、方法或任何其它语句的类看起来像这样:

public class MyClass {

}

上面的Java代码必须位于与该类同名的文件中,并且该文件要以后缀.java结尾。更具体地说,上面的代码必须放在文件MyClass.java中。

将文件放在与其类名相同并以.java结尾的文件中之后你就可以通过Java SDK对其进行编译。

建议你把类放在一个包中。在Java中一个包只是文件系统中的一个文件夹,一个包中可以包含一个或多个Java文件。
与普通文件夹一样,包也可以进行内联。举个例子,你可以创建一个称为myjavacode的包,然后这个包会与硬盘上的myjavacode文件夹相对应。

如果你把类放在一个包中,则必须在对应的Java文件顶部指定包名称:

package myjavacode;

public class MyClass {

}

注意:当文件MyClass.java中包含包声明package myjavacode;之后它就必须位于myjavacode文件夹当中。
仅仅把类文件放入文件夹中是不正确的,还要在类文件文件中声明包,两者缺一不可。

Main方法

Java程序需要从某个起点开始执行。Java程序以某个类中的main方法作为起点开始执行。
你可以选择main方法的所在类,但不能更改main方法的名称,即main方法的名称永远是main。
下面是main方法的定义:

package myjavacode;

public class MyClass {

    public static void main(String[] args) {

    }
}

这三个关键字:public、static和void具有特殊含义。现在不用管它们。只需记住main()方法声明需要这三个关键字。

在三个关键字之后,是方法的名称。概括地说,方法是一系列语句的集合,可以将它们视为单个操作来执行。通过调用方法,你可以执行该方法中的所有语句。

方法的名称位于左括号之后,然后是参数列表。参数是变量,参数可以从方法外部传入,方法中的代码可以使用参数做一些计算。

main方法必须始终接受一个String数组。你可以这样声明一个String数组:

String[] stringArray

你现在不需要了解字符串是什么或数组是什么。这将在以后的教程中进行解释。

此外,参数的名称可以随便指定。在前面的main()方法实例中,我将参数String数组命名为args,在第二个实例中,我将它命名为stringArray。你可以自由地选择参数名称。

在方法的参数列表之后,首先是左花括号{,然后是一些空格,然后是右花括号}
在花括号内你可以放一下在main方法被调用时将要执行的Java代码。

这也称为方法体。在上面的实例中,main方法中没有任何要执行的指令,它是一个空方法。

让我们在main方法中插入一条代码:

package myjavacode;

public class MyClass {

  public static void main(String[] args) {
    System.out.println("Hello World, Java app");
  }
}

现在main方法中有一条语句:

System.out.println("Hello World, Java Program");

该行语句会打印Hello World, Java Program到控制台中。
如果你在命令行中运行这个程序,那么你将看到这个输出。

如果你在IDE中运行此Java程序,则IDE通常会捕获控制台的所有输出,并在IDE内部的某个位置显示出来。

运行main方法

你可以通过命令行调用JRE提供的java命令来启动Java程序。

在调用java命令时你可以指定被执行类的位置以及要传递给main方法的参数。

下面是java命令的使用实例:

java -cp classes myjavacode.MyClass

第一和第二个参数-cp classes指明已编译的Java类位于哪个目录中(cp表示classpath)。在本例中已编译的Java类位于名为classes的目录中。

第三个参数是JVM要执行的Java类的名称。

传递参数给main()方法

你可以把参数在启动时通过命令行传递给main()方法:

java -cp classes myjavacode.MyClass Hello World

当JVM执行myjavacode.MyClass类的main()方法时,作为参数传递给main()方法的String数组将包含两个字符串:“Hello”和“World”。

main()方法可以访问参数:

package myjavacode;

public class MyClass {

    public static void main(String[] args) {
        System.out.println( args[0] );
        System.out.println( args[1] );
    }
}

注意:args数组中对元素0和元素1的引用(args[0]和args[1])分别包含字符串HelloWorld

变量和数组将在以后的教程中详细介绍。如果你现在完全不了解它们,请不要担心。

Java主类

如果你的Java程序中只有一个Java类里面有main()方法,则这个包含main()方法的类通常称为主类。

你也可以在不同的类中定义多个main()方法。
但是JVM每次只能运行其中的一个,当然你也可以同时启动多个JVM,给每一个JVM指定不同的启动类。

发表评论

电子邮件地址不会被公开。 必填项已用*标注