我们这节课的目的是让大家编写第一个Java程序——Hello World,并明白如何运行,随后的课程我们会剖析这个程序。
打开文本编译器,新建一个文本之后输入以下代码:
x
1public class HelloWorld {
2 public static void main(String[] args) {
3 System.out.println("Hello World!");
4 }
5}
把这个文本文件保存为:HelloWorld.java。
我们先简单介绍一下这段代码,随后的章节中我们会再次剖析:
其中,class是声明了一个类,HelloWorld是类名,public static void main(String[] args) {}
是一个方法。
Java规定,某个类定义的public static void main(String[] args)
是Java程序的固定入口方法,Java程序总是从main
方法开始执行。
System.out.println("Hello World!")
代表着要在屏幕输出:“Hello World!”。
注意:这里的文件名必须和class后面的字符串(类名)是一模一样的,包括大小写!
我们上面编写的这个.java的文本文件,就是Java程序Hellow World的源码。
上一节课讲过,Java代码的运行,必须要有JRE,实际上,Java代码是靠着JRE中的JVM来运行的。JVM是Java Virtual Machine的缩写,翻译成中文叫做Java虚拟机。在上一节的“Java特性”中我们提到过,正是JVM使得Java拥有“一次编写,到处运行”的特性。
Java源码文件(.java文件)需要被编译成字节码文件(.class文件),才可以在JVM上运行。Java提供了javac命令可以完成这一编译过程,javac处于JDK的bin目录之下。
我们可以通过以下几步来让Hello World运行起来:
1、在保存HelloWorld.java的目录下执行:
x
1$ javac HelloWorld.java
如果源代码无误,上述命令不会有任何输出,而当前目录下会产生一个HelloWorld.class文件:
x
1$ ls
2HelloWorld.class HelloWorld.java
2、使用java命令执行HelloWorld.class文件:
x
1$ java HelloWorld
2Hello World!
这里的HelloWorld是传递给java命令的参数,意思是让java运行HelloWorld这个类中的入口方法(main方法)。最终我们看到,屏幕上输出了:“Hello World!”。这说明我们的程序已经运行成功了!
上述的运行可以总结为下图:
在Java 11中,可以使用java命令直接运行一个单文件的源码了,也就是你不编译直接这么操作也可以:
x
1$ java HelloWorld.java
2Hello World!
当然,该新特性实际依然是先编译再执行的,我们可以明显感觉到,直接这样运行会比运行javac HelloWorld
慢,因为就是有一个编译再执行的过程。