购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 第一个Java程序

本书的第一个Java程序名为HelloWorld,本节分别介绍其编写、编译与运行。

1.3.1 HelloWorld程序的编写

下面开始编写一个完整的Java程序,此程序的任务是输出一个字符串Hello World!!!。在JDK的安装路径的bin文件夹下(本案例路径为D:\Program Files\Java\jdk-14.0.1\bin)新建一个文本文档,命名为HelloWorld.txt,用记事本打开,输入如下代码:


public class HelloWorld { 
      public static void main(String[]args) { 
            System.out.print("Hello World!!!"); 
      } 
}

保存后,修改文件扩展名,将.txt改为.java,这种文件称为Java源文件。在HelloWorld程序中,第1行定义了一个类(class),命名为HelloWorld,初学者可以简单地把类理解为Java程序。public是类的修饰词,表示该类是公有的,class表明这是一个类。public和class都是Java的关键字(或称为保留字),可暂时认为是固定的。class后面是类名,每个类都有一个名字,类名由程序员自定。类名以大写字母开头,如这里的类名为HelloWorld。类名后面的符号“{”表示类的开始,同理,符号“}”表示类的结束。

第2行定义了主方法main()。方法是类的下一层次的概念,所以这行代码需要缩进一个制表位,一个类可以包含多个方法,其中main()方法是程序开始执行的入口。main后面的“()”里面的内容表示方法的参数,暂时按照示例输入即可,其后的一对“{}”符号代表该方法的起止范围。

第3行是一条语句,语句是方法的下一层次的概念,所以这行代码又要缩进一个制表位,方法是包含语句的结构体,一个方法可以有一条或多条语句。本程序中的main()方法包含了一条以“System.out.println”开头的语句。该语句的作用是在控制台上输出Hello World!!!。注意要输出的内容要放在“()”里面的双引号中。Java中的每条语句都以分号“;”结束,因此“;”也称为语句结束符。

第4行符号“}”表示主方法结束,注意这个符号“}”的缩进量与主方法开始出现时(第2行)的缩进量相同。

第5行符号“}”表示类结束,注意这个符号“}”缩进量与类开始出现时(第1行)的缩进量相同。

注意: 保留字(reserved word)或关键字(keyword)对编译器而言都是有特定含义的,所以不能在程序中用于其他目的。例如,当编译器看到class时,它知道class后面就是这个类的名字。这个程序中的其他关键字还有public、static和void等。

Java源文件HelloWorld.java编写好后,还不能直接运行,需要先进行编译。源文件编译成后缀名为.class的字节码文件后才能在JVM中运行。

1.3.2 HelloWorld程序的编译与运行

JDK提供了编译与运行的工具。打开JDK安装路径下的bin文件夹(本案例路径为D:\Program Files\Java\jdk-14.0.1\bin),可以看到里面有众多的.exe可执行文件。其中的javac.exe是编译工具,负责将Java源程序编译为字节码;java.exe是运行工具,负责运行字节码文件,如图1.3所示。

图1.3 JDK提供的工具

下面介绍使用JDK提供的工具来编译与运行前面编写的HelloWorld源程序。

(1)打开命令行窗口,切换到HelloWorld.java的保存路径中,即JDK安装路径下的bin文件夹,如图1.4所示。本例中JDK安装路径为D:\Program Files\Java\jdk-14.0.1\bin。

图1.4 切换到bin文件夹

(2)利用javac命令将HelloWorld.java源程序文件编译成.class字节码文件。输入完整命令javac HelloWorld.java,然后按回车键,如图1.5所示。

图1.5 执行javac命令

命令执行成功后,bin文件夹中将多出一个名为HelloWorld.class的文件。该文件为Java程序的字节码形式,可以被JVM解释运行,如图1.6所示。

图1.6 HelloWorld.class文件

(3)利用java命令解释运行生成的字节码文件HelloWorld.class。输入完整命令java HelloWorld(注意不要加上.class),然后按回车键。当命令行窗口输出Hello World!!!时,第一个Java程序运行成功,如图1.7所示。

图1.7 运行成功

1.3.3 HelloWorld程序的运行机制

Java源文件由高级语言编写,机器不能直接识别,需要先编译成JVM能识别的字节码文件,才能在各个平台上的JVM上运行。字节码类似机器指令,它是体系结构中立的,可以在任何带JVM的平台上运行。编译成字节码文件只是一个中间过程,JVM还要再解释运行字节码文件,“翻译”成最终的机器码才能在计算机上运行。以HelloWorld程序为例,首先使用javac命令对HelloWorld.java源文件进行编译,生成字节码文件HelloWorld.class;然后使用java命令启动JVM,JVM先将编译好的字节码文件HelloWorld.class加载到内存(称为类加载),然后对加载到内存的Java类进行解释运行,“翻译”成机器码在计算机上运行,便可看到运行结果,如图1.8所示。

图1.8 HelloWorld程序的运行机制

1.3.4 HelloWorld程序的纠错

初次编写程序时,可能会出现各种错误。下面来了解错误原因和HelloWorld示例程序中常见的一些错误。

在运行程序之前,必须创建程序并进行编译。如果程序有编译错误,必须修改程序来纠正错误,然后重新编译它。如果程序有运行时的错误或者不能产生正确的结果,必须修改这个程序,重新编译,然后重新执行。

如果没有语法错误,编译器(compiler)就会生成一个后缀名为class的文件。如果有语法错误,编译器在生成.class文件时会执行失败,并报出相关的错误信息。如将HelloWorld程序中的System关键字换成system,然后测试编译,如图1.9所示。

图1.9 System写错的情形

接着利用javac命令进行编译,结果如图1.10所示。

图1.10 编译出错信息

程序编译失败,并报出错误信息。根据错误信息可以排查并改正Java程序,然后正确运行。

下面总结了开发中几种常见的错误。

1.遗漏右括号

括号用来标识程序中的块。每个左括号必须有一个右括号匹配。常见的错误是遗漏右括号。为避免这个错误,只要输入左括号的时候就输入右括号,如下面的例子所示:


public class HelloWorld { 
 
} // 立刻输入右括号以匹配左括号

如果使用Eclipse这样的集成开发环境,将自动为每个输入的左括号插入一个右括号。

2.遗漏分号

每个语句都以一个语句结束符“;”结束。通常,新手会忘了在一个块的最后一行语句后加上语句结束符,如下面例子所示:


public static void printTab() { 
     System.out.println("1\t2\t3"); 
     System.out.println("44\t55\t66") //遗漏语句结束符 
}

3.遗漏引号

字符串必须放在引号中。通常,编程入门者会忘记在字符串结尾处加上一个引号,如下面例子所示:


public static void printTab() { 
     System.out.println("1\t2\t3"); 
     System.out.println("44\t55\t66) //遗漏引号 
}

4.大小写拼写错误

Java是大小写敏感的语言。有些新手常将大小写拼写错误,如将System写成system等。下面的代码将main错误拼写成Main,导致程序编译错误:


public static void Main(String[]args) { 
     System.out.println("1\t2\t3"); 
}

5.文件名与类名不一致

源文件的后缀名必须是java,而且文件名必须与公共类名完全相同。如果文件名为HelloWorld.java,但类名写成了helloWorld,程序将报错,如图1.11所示。

图1.11 类名错误 71odUGdnw9Nv753QYIKtnqATal+dl522gqe5VawiOgqr1c3sbqj+ctiQkhGGrC7H

点击中间区域
呼出菜单
上一章
目录
下一章
×