### 第一个 Java 程序

编写 Java 应用程序，可以使用任何一个文本编辑器来编写程序的源代码，然后使用 JDK 搭配的工具进行编译和运行。当然，现在流行的开发工具可以自动完成 Java 程序的编译和运行，甚至还带有代码辅助功能，可以提示完整的语法代码，但是大型的 IDE 开发工具需要的系统资源较大，在开发一个简单的程序时，还是原始的文本编辑器速度较快，另外，还有一批偏爱代码编写的程序人员，一直使用文本编辑器进行程序开发，这样的程序编写方法造就出的程序开发人员，往往是基础较强的；技术比较扎实的程序编写人员。下面将介绍如何使用文本编辑器开发一个简单 Java 程序的步骤。

下面编写本书的第一个 Java 程序，它在屏幕（或者说控制台）上输出“HelloJava”信息。程序编写步骤如下：

（1）使用文本编辑器编写 Java 程序代码的过程和平时编写文本文件是一样的。只要注意 Java 语法格式和编码规则就可以了。单击“开始”/“所有程序”/“附件”/“记事本”命令，在记事本中输入如下代码：

错误

下面介绍一下读者在这一步骤常犯的错误，这些错误是笔者为读者解决问题时记录下来的。

1．在输入代码时，使用了中文的符号，例如“{}”中括号和“；”分号，Java 编译器只认识英文符号，如果读者在输入程序代码时使用中文符号，会导致编译错误。例如将“System.out.println()”方法所在代码行的最后一个分号替换为中文的“；”，在执行“javac HelloJava.java”命令编译源代码文件时，会出现如图 1 所示的错误。

图 1 使用中文分号导致的错误

2．程序代码的字母大小写要注意，Java 对大小写字母是敏感的，也就是 class 不等于 Class，它们是两个词。如果把代码中的关键字或者类、对象变量等字母大小写混淆将出现多种错误。

（2）在编写 HelloJava 程序代码的记事本窗口中单击“文件”/“保存”命令，在“另存为”对话框中首先选择文件的存储位置，这里选择“本地磁盘 (C:)”。然后选择保存文件的类型为“所有文件”，既类型为*.*，这样对话框就不会自动为文件名添加“.txt”后缀了。最后在“文件名”文本框输入文件的名称“HelloJava.java”。如图 2 所示。

图 2 保存记事本编写的 Java 源代码文件

错误

下面介绍一下读者在这一步骤常犯的错误。

1．在保存文件名时没有填写“.java”后缀，或者没有选择“保存类型”为所有文件，导致文件最终保存为“HelloJava.java.txt”，致使后缀名称错误。

2．Java 源代码文件的名称必须和定义的类或接口名称一直，然后添加“.Java”后缀。本实例使用 class 关键字定义了名称为 HelloJava 的类，所以保存该文件时的名称必须为“HelloJava.java”，而且要区分大小写。如果把文件名称保存成为“hellojava.java”，既全部小写（与类名不匹配），然后执行编译该云文件的指令会出现如图 3 所示的错误提示。

图 3 文件名与类名不匹配时的错误

（3）Java 源程序需要编译成字节码才能够被 JVM 识别，这需要使用 JDK 的“javac.exe”命令，输入命令时，后缀“.exe”可以省略。假设“HelloJava.java”文件保存在 C 盘，单击“开始”/“运行”命令，在“运行”对话框中输入“cmd”单击“确定”按钮，启动控制台，在控制台中输入“cd\”命令将当前位置切换到 C 盘根目录，然后输入“javac HelloJava.java”命令编译源程序。源程序被正确编译后，会在相同的位置生成相应的“.class”文件，这就是编译后的 Java 字节码文件，它是可以运行的。

注意：输入“javac HelloJava.java”命令时，要注意“javac”和“HelloJava.java”之间有一个空格字符。如果没有输入这个空格字符，将导致命令出错，无法执行。

（4）在控制台中输入“java HelloJava”命令将执行编译后的“HelloJava.class”字节码文件。编译与运行 Java 程序的步骤以及运行结果如图 4 所示。

图 4 编译与运行 Java 程序的步骤以及运行结果

说明：输入“java HelloJava”命令运行 Java 程序时，运行的是经过编译的“java.class”文件，但是不需要输入“.class”后缀名称。

注意：使用“Javac ××.java”命令编译 Java 源程序时，如果没有错误提示信息，说明编译成功，也许会有一些警告信息，但是编译能够通过，但是如果出现 Exception 类的异常错误信息，那么说明源程序的代码有问题无法完成编译过程，这是可以根据相应的 Exception 异常判断错误原因和代码位置，来解决代码错误。有关异常类的知识，将在其他位置介绍。