第3章 CHAPTER 3 第一个Java程序 本书第一个Java程序是通过控制台输出HelloWorld,以这个示例为切入点,系统介绍Java程序的编写、Java源代码结构以及一些基础知识。 在Java中,程序都是以类的方式组织的,Java源文件都保存在.java文件中。每个可运行的程序都是一个类文件,或者称为字节码文件,保存为.class文件。要实现在控制台中输出HelloWorld示例,则需要编写一个Java类。 微课视频 3.1使用IntelliJ IDEA 实现 HelloWorld示例可通过多种工具实现,本节首先介绍如何通过IntelliJ IDEA实现。 3.1.1创建项目 在IntelliJ IDEA中通过项目(Project)管理Java类,因此需要先创建一个Java项目,然后在项目中创建一个Java类。 IntelliJ IDEA创建项目步骤如下: (1) 如果IntelliJ IDEA第一次启动,则先启动如图31所示的欢迎页面,在欢迎页面中单击Create New Project按钮,进入如图32所示对话框。 图31欢迎页面 图32新建Java项目 (2) 如果已经进入IntelliJ IDEA工具,则通过选择File→New→Project菜单,也可以进入如图32所示对话框。 在图32中选择Java项目类型。如果JDK配置没有问题,则在Project SDK下拉框中会识别JDK版本。其他的选项保持默认值,然后单击Next按钮进入如图33所示对话框进行Java项目模板选择。注意不要选择任何选项,直接单击Next按钮进入如图34所示对话框进行项目名称设置。根据自己的情况在Project name输入框中输入项目名称,在Project location输入框中输入项目保存路径。设置完成后单击Finish按钮完成项目创建,然后进入如图35所示的IntelliJ IDEA工具。 图33新建Java项目模板 3.1.2创建类 项目创建完成后,右击src文件夹,选择New→Java Class菜单命令,打开如图36(a)所示New Java Class(新建Java类)对话框。然后在输入框中输入类名HelloWorld,如图36(b)所示,双击Class类型创建HelloWorld类,如图37所示。 图34项目名称设置 图35项目创建完成 图36“New Java Class”对话框 图37创建类完成 3.1.3运行程序 修改刚生成的HelloWorld.java源文件,添加main方法,并添加输出语句。修改完成后代码如下: public class HelloWorld { public static void main(String[] args) {① System.out.print("Hello World.");② } } 代码第①行中的public static void main(String[] args)方法是一个应用程序的入口,也表明了HelloWorld是一个Java应用程序(Java Application),可以独立运行。代码第②行的System.out.print("Hello World.")语句是输出Hello World.字符串到控制台。 程序编写完毕就可以运行了。如果是第一次运行,则需要选择运行方法,具体步骤: 右击HelloWorld文件,选择Run 'HelloWorld.main()'菜单运行HelloWorld程序。如果已经运行过一次,就不需要这么麻烦了,直接单击工具栏中的“运行”按钮,或选择菜单Run→Run 'HelloWorld',或使用快捷键Shift+F10,就可以运行上次的程序。运行结果如图38所示,则Hello World.字符串显示在下面的控制台中。 图38运行结果 微课视频 3.2文本编辑工具+JDK实现 如果不想使用IDE工具(建议初学者通过这种方式学习Java),那么文本编辑工具+JDK对于初学者而言是一个不错的选择,这种方式可以使初学者了解到Java程序的编译和运行过程,通过自己在编辑器中输入所有代码,可以帮助熟悉常用类和方法。 3.2.1编写源代码文件 首先使用任何文本编辑工具创建一个文件,然后将文件保存为HelloWorld.java。接着在HelloWorld.java文件中编写如下代码。 public class HelloWorld { public static void main(String[] args) { System.out.print("Hello World."); } } 3.2.2编译程序 图39编译源文件 编译程序需要在命令行中使用JDK的javac指令编写,参考2.1.3节打开命令提示符工具,如图39所示,通过cd命令进入源文件所在的目录,然后执行javac指令。如果没有错误提示,则说明编译成功。编译成功时会在当前目录下生成类文件,如图310所示生成了三个类文件,这是因为HelloWorld.java源文件中定义了三个类。 图310编译成功 图311运行类文件 3.2.3运行程序 编译成功之后就可以运行了。执行类文件需要在命令行中使用JDK的java指令,参考2.1.3节打开命令行,如图311所示,通过cd命令进入源文件所在的目录,然后执行java HelloWorld指令,执行成功后在命令行窗口输出Hello World!字符串。 微课视频 3.3代码解释 经过前面的介绍,读者应该能够照猫画虎,自己动手做一个Java应用程序了。但可能还是对其中的一些代码不甚了解,下面详细解释HelloWorld示例中的代码。 //类定义 public class HelloWorld {① //定义静态main方法 public static void main(String[] args) {② System.out.print("Hello World.");③ } } 代码第①行是定义类,public修饰符用于声明类是公有的,class是定义类关键字,HelloWorld是自定义的类名,后面跟着的“{…}”是类体,类体中会有成员变量和方法,也会有一些静态变量和方法。 代码第②行是定义静态main方法,而作为一个Java应用程序,类中必须包含静态main方法,程序执行是从main方法开始的。main方法中除参数名args可以自定义外,其他必须严格遵守如下两种格式: public static void main(String args[]) public static void main(String[] args) 这两种格式本质上就是一种,String args[]和String[] args都是声明String数组。另外,args参数是程序运行时通过控制台向应用程序传递字符串参数。 代码第③行System.out.print("Hello World."); 语句是通过Java输出流(PrintStream)对象System.out打印Hello World.字符串,System.out是标准输出流对象,它默认输出到控制台。输出流(PrintStream)中常用打印方法如下: □print(String s): 打印字符串不换行,有多个重载方法,可以打印任何类型数据。 □println(String x): 打印字符串换行,有多个重载方法,可以打印任何类型数据。 □printf(String format, Object... args): 使用指定输出格式,打印任何长度的数据,但不换行。 修改HelloWorld.java示例代码如下。 public class HelloWorld { public static void main(String[] args) { //通过print打印第一个控制台参数 System.out.print(args[0]);① //通过println打印第二个控制台参数 System.out.println(args[1]);② //通过printf打印第三个控制台参数,%s表示格式化字符串 System.out.printf("%s", args[2]);③ System.out.println(); int i = 123; //%d表示格式化整数 System.out.printf("%d\n", i);④ double d = 123.456; //%f表示格式化浮点数 System.out.printf("%f%n", d);⑤ System.out.printf("%5.2f", d);⑥ } } 图312在命令行中运行程序 编译HelloWorld.java源代码后,如图312所示,其中的java命令行后面的HelloWorld是要运行的类文件,Tony Hello World.是参数,多个参数用空格分隔。 上述代码第①行使用print方法打印第一个参数args[0],注意该方法是打印完成后不换行,从输出结果中可见第一个参数Tony和第二个参数Hello连在一起了。代码第②行使用println方法打印第二个参数args[1],从输出结果中可见第二个参数Hello后面是有换行的。 代码第③、④、⑤、⑥行都是使用printf方法打印,注意printf方法后面是没有换行的,想在后面换行可以通过System.out.println()语句实现,或在打印的字符串后面添加换行符号(\n或%n),见代码第④行和第⑤行。代码第⑥行中%5.2f也表示格式化浮点数,5表示总输出的长度,2表示保留的小数位。 提示在简体中文版本的Windows平台中默认编码集是GBK。所以javac指令编译源代码文件时,默认文件的编码集是GBK。一般情况下使用记事本和EditPlus等文本编辑工具创建的源代码文件默认编码集也是GBK,因此在编译这些源代码文件时不会发生错误。但是使用Sublime Text工具创建的源代码文件默认编码集也是UTF8,如果源代码文件中有中文,则发生如图313所示的编译错误。为了解决这种错误,可以在编译时指定源代码文件字符集,如图314所示使用javacencoding UTF8 HelloWorld.java指令即可。 图313采用UTF8编码的源代码文件在 Windows平台中的编译错误 图314编译时指定源代码文件字符集 3.4本章小结 本章通过一个HelloWorld示例,介绍使用IntelliJ IDEA和使用文本编辑工具+JDK实现该示例的具体过程。掌握IntelliJ IDEA的使用非常重要,但是使用文本编辑工具+JDK对于初学者也很有帮助。本章最后详细解释了HelloWorld示例。 3.5动手实践: 世界,你好! 编程题 1. 使用IntelliJ IDEA工具编写并运行Java应用程序,使其在控制台输出字符串“世界,你好!”。 2. 使用文本编辑工具编写Java应用程序,然后使用JDK编译并运行该程序,使其在控制台输出字符串“世界,你好!”。