《Java语言导学(原书第6版)》一一1.2 “Hello World!”实例程序

1.2 “Hello World!”实例程序
本节详细介绍编译和运行“Hello World!”实例程序的指令。1.2.1节介绍利用集成开发环境NetBeans IDE开发该程序的过程。NetBeans IDE在Java平台上运行,也就是说可在任何配置了JDK的操作系统上运行NetBeans IDE,包括Microsoft Windows、Solaris、Linux和OS X。建议尽可能使用NetBeans IDE取代命令行。1.2.2节和1.2.3节依次介绍不使用集成开发环境时在Microsoft Windows、Solaris、Linux等平台上开发该实例程序
的详细过程。(关于支持的操作系统版本信息,参见Oracle JDK 8和JRE 8认证的系统配置。)运行时遇到问题,可参考1.4节,这部分给出了新手可能会遇到的大多数问题的解决方案。
1.2.1 用NetBeans IDE开发“Hello World!”
现在写第一个程序!这些指令适用于NetBeans IDE用户。
1.?软件列表
编写该实例程序需要准备下述两个软件:
1)Java SE开发工具包。参考Java SE下载页。
2)NetBeans IDE。NetBeans IDE下载页给出所有平台的NetBeans IDE列表。
2.?创建第一个应用程序
第一个应用程序HelloWorldApp显示问候语“Hello World!”。按如下过程创建该程序:
1)创建IDE项目。创建IDE项目时会创建一个环境,用于构建(build)和运行应用程序。使用IDE项目不会遇到像命令行开发那样的配置问题。在IDE中,只需选择一个菜单项,就可以建立和运行应用程序。
2)在生成的源文件中添加代码。源文件包含Java语言写的代码。创建IDE项目时,会自动生成一个源文件框架(skeleton),只需修改该文件添加“Hello World!”消息即可。
3)将源文件编译成.class文件。IDE会调用Java编译器(javac)将源文件翻译成Java虚拟机能理解的指令。这些指令通常称为字节码。
4)运行程序。IDE调用Java应用程序启动器(java)在Java虚拟机中运行应用程序。
3.?创建IDE项目
按下述步骤创建IDE项目。
1)启动NetBeans IDE。
在Microsoft Windows系统中,单击Start菜单中的NetBeans IDE选项。
在Solaris和Linux系统中,进入IDE的bin目录,输入./netbeans执行IDE启动脚本。
在OS X系统中,单击NetBeans IDE图标。
2)在NetBeans IDE中选择File | New Project(如图1-4所示)。

图1-4 NetBeans IDE的New Project菜单项
3)在New Project向导中,扩展Categories中的Java,选择Projects中的Java Application,然后单击Next(如图1-5所示)。

图1-5 NetBeans IDE的New Project向导中的Choose Project页
4)在Name and Location向导页中,做如下操作(如图1-6所示):

图1-6 NetBeans IDE的New Project向导中的Name and Location页
在Project Name字段输入Hello World App。
在Create Main Class字段输入helloworldapp.HelloWorldApp。
5)单击Finish。
项目创建完毕,IDE会打开该项目,如图1-7所示。创建的项目包含以下组件:

图1-7 打开HelloWorldApp项目的NetBeans IDE
Projects窗口,包含项目组件(如源文件和所需的库等)的树形图。
Source Editor窗口,其中已打开了文件HelloWorldApp.java。
Navigator窗口,快速查阅所选类中的元素。
4.?在平台列表中添加JDK 8(如有必要)
可能需要在IDE的可用平台列表中添加JDK 8。这可通过选择Tools菜单中的Java Platforms实现,如图1-8所示。

图1-8 选择Tools菜单中的Java Platforms
如果已安装的平台列表中没有JDK 8(可能显示为1.8或1.8.0),单击Add Platform,转到JDK 8的安装目录,并单击Finish。会看到新平台添加完毕,如图1-9所示。

图1-9 Java平台管理器
如果要将JDK 8设为所有项目的默认平台,只需在命令行使用--jdkhome参数运行IDE,或将JDK的安装路径设为文件“安装目录/etc/netbeans.conf”中的netbeans_j2sdkhome属性的值。
如果只需将JDK 8设为当前项目的默认平台,在Projects面板中选择Hello World App,单击File菜单中的Project Properties(Hello World App),单击Libraries,然后选择Java Platform下拉菜单中的JDK 1.8,结果与图1-10类似。至此IDE已成功配置JDK 8。

图1-10 Hello World App项目属性中的Libraries
5.?在源文件中添加代码
创建项目时,已经选中New Project向导中Create Main Class前面的选择框。因此,IDE会创建一个框架类。将其中代码

替换成

就可以将“Hello World!”消息添加到框架代码中。
另外,可以将代码

替换成

这四行是代码注释,不会影响程序运行。本章后续小节会介绍代码注释的使用和格式。
注意 如上所述输入所有的代码、命令和文件名。编译器(javac)和启动器(java)都是区分大小写的,所以输入的英文字母大小写必须一致。比如,HelloWorldApp与helloworldapp是不同的。

选择File菜单,单击Save菜单项保存文件,文件内容如下:

6.?将源文件编译成.class文件
在IDE主菜单中,选择Run | Build Project (Hello World App)菜单项编译源文件。Output窗口及其结果如图1-11所示。
如果构建输出中包含语句BUILD SUCCESSFUL,那么恭喜你,编译成功!
如果构建输出中包含语句BUILD FAILED,那么代码可能存在语法错误。Output窗口报告的错误都是超链接文件,双击超链接就可定位代码中的错误位置。修正错误后再次选择Run | Build Project重新构建即可。

图1-11 Output窗口——HelloWorldApp项目的构建结果
构建项目时会生成字节码文件HelloWorldApp.class。打开Files窗口,展开节点Hello World App/build/classes/helloworldapp,显示生成的新文件,如图1-12所示。至此,项目构建完毕,接下来就可以运行程序了。
7.?运行程序

在IDE菜单栏中,选择Run | Run Main Project菜单项。如果运行成功,会显示如
图1-13所示结果。

8.?NetBeans IDE的使用技巧
本章剩余部分会解释该应用程序中的代码。后续小节会深入介绍核心的语言特性,并提供更多例子。尽管本书后面不会介绍使用NetBeans IDE的指令,但使用IDE编写和运行实例代码比较容易。这里介绍IDE的一些使用技巧:
在IDE中创建项目后,就可使用New File向导往项目中添加文件。选择File | New File并在向导中选择一个模板,如Empty Java File模板。
IDE的Compile File(F9)和Run File(Shift+F6)可以分别编译和运行单个文件(相对于整个项目而言)。使用Run Main Project命令时,IDE只会运行IDE关联为主项目的主类的文件。因此,即使在HelloWorldApp项目中创建其他的类并使用Run Main Project命令运行该文件,IDE也只会运行HelloWorldApp文件。
也可以为应用程序创建包含多个源文件的独立IDE项目。
在IDE中输入代码时,可能会弹出代码完成框。此时,可以忽略代码完成框并继续输入代码,也可以选择完成框中的表达式。如果不喜欢自动弹出代码完成框,可以关闭该功能。选择Tools | Options | Editor,单击Code Completion标签,清除Auto Popup Completion Window选择框。
选择IDE菜单栏中的Refactor菜单可以重命名Projects窗口中的源文件节点。弹出的Rename对话框会引导重命名类和更新代码,单击Refactor保存这些更改。如果项目只有一个类,这些操作就看似没有必要;但在大项目中,当更改会影响代码的其他部分时,这些操作会很有用。
关于NetBeans IDE的详细特性,可参考《NetBeans文档页》。
1.2.2 在Microsoft Windows中开发“Hello World!”
本节介绍在Windows系统中基于命令行开发“Hello World!”实例程序的详细过程。(关于支持的操作系统版本的信息,参见Oracle JDK 8和JRE 8认证的系统配置。)
1.?软件列表
编写该程序需要准备下列两个软件:
1)JDK 8。下载Windows版本的JDK 8。(注意是下载JDK,而不是下载Java运行时环境JRE)。详情参考安装指南。
2)文本编辑器。在这个例子中使用Windows自带的Notepad编辑器。如果使用其他文本编辑器,只需修改相关指令即可。
2.?创建第一个应用程序
按如下过程创建应用程序HelloWorldApp:
1)创建源文件。源文件包括用Java写的代码。源文件可以用任意文本编辑器创建和编写。
2)将源文件编译成.class文件。Java编译器(javac)将源文件翻译成Java虚拟机能理解的指令。如前所述,.class文件中的指令通常称为字节码。
3)运行程序。Java应用程序启动器(java)使用Java虚拟机运行应用程序。
3.?创建源文件
创建源文件有两种方法:①保存文件HelloWorldApp.java;②采用下述方法。
首先打开文本编辑器。在Start菜单选择Programs | Accessories | Notepad启动Notepad编辑器。在新文档中输入以下代码:

注意 如上所述输入所有的代码、命令和文件名。编译器(javac)和启动器(java)都是区分大小写的,所以输入的字母大小写必须一致。

将上述代码存入文件HelloWorldApp.java。在Notepad中,选择File | Save As菜单项,然后在弹出的Save As对话框中执行如下操作:
1)使用Save In组合框指定保存文件的文件夹(或目录)。在这个例子中,目录是C:\myapplication。
2)在File name文本字段中输入"HelloWorldApp.java",包括双引号。
3)在Save as type组合框中,选择Text Documents(*.txt)。
4)在Encoding组合框中,编码类型选为ANSI。
完成后,对话框如图1-14所示。单击Save,退出Notepad。

图1-14 Save As对话框
4.?将源文件编译成.class文件
在Start菜单中选择Run,然后输入cmd,启动shell窗口或命令行窗口,如图1-15
所示。

图1-15 shell窗口
命令提示符会显示当前目录。打开命令行窗口时,当前目录通常是主目录,如图1-15所示。
要编译源文件,需将当前目录定位到文件所在的目录。比如,如果源文件目录是C:\myapplication,在提示符下输入下述指令并按回车键:

当前目录就变成C:\myapplication>。
注意 要切换到不同驱动器上的目录,需要输入其他命令,也就是说要输入驱动器的名称。比如,要切换到D:\myapplication,就必须输入D:,如下所示:

在提示符下输入dir并按回车键,可以显示源文件,如下所示:

现在可以编译文件了。在提示符下输入下述命令并按回车键:

编译器会生成字节码文件HelloWorldApp.class。在提示符下输入dir并按回车键就会显示生成的新文件,如下所示:

生成.class文件后,就可以运行程序了。
5.?运行程序
在同一个目录下,在提示符下输入下述命令并按回车键:

屏幕上会显示:

恭喜,程序运行成功。上述过程中如果遇到问题,可参考1.4节。
1.2.3 在Solaris和Linux中开发“Hello World!”
本节详细介绍在Solaris和Linux系统中用命令行开发“Hello World!”实例程序的完整过程。
1.?软件列表
编写第一个程序需要准备下述两个工具:
1)JDK 8。下载Solaris或Linux版本的JDK 8。(注意是下载JDK,而不是下载Java运行时环境JRE)。详情参考《安装指南》。
2)文本编辑器。在这个例子中,采用Pico编辑器(大多数基于UNIX的平台都能用它)。如果使用不同的文本编辑器(如vi或emacs),这些指令很容易改写过来。
2.?创建第一个应用程序
按如下过程创建应用程序HelloWorldApp:

1)创建源文件。源文件包括用Java语言写的代码。源文件可以用任意文本编辑器创建和编辑。
2)将源文件编译成.class文件。Java编译器(javac)将源文件翻译成Java虚拟机能理解的指令。如前所述,.class文件中的指令通常称为字节码。
3)运行程序。Java应用程序启动器(java)使用Java虚拟机运行应用程序。
3.?创建源文件
创建源文件有两种方法:①无需输入代码,保存文件HelloWorldApp.java;②采用下述过程创建。
先打开shell窗口或Terminal窗口,如图1-16所示。刚打开时,当前目录通常是主目录。任何时候,只要在提示符下输入cd,然后按Enter键,就可以将当前目录切换成主目录。

图1-16 Terminal窗口
创建的源文件保存在独立的目录中。命令mkdir可用于创建目录。比如,使用下述命令可以在/tmp目录中创建examples/java目录:

使用下述代码可将当前目录切换到该新目录:

现在创建源文件。
在提示符下输入pico并按Enter键,就可以启动Pico编辑器。如果系统返回消息“pico:command not found”,就说明pico很有可能无法用。此时需要咨询系统管理员或者使用其他编辑器。
启动Pico时,会出现新的空缓冲区(buffer)。这就是输入代码的区域。将下述代码输入该缓冲区:

注意 对如上输入的所有代码、命令和文件名,编译器(javac)和启动器(java)都是区分大小写的,所以输入的字母大小写必须一致。

将上述代码存入文件HelloWorldApp.java。在Pico编辑器中,按下Ctrl+O,编辑器的底部就会显示提示符File Name to Write:,输入HelloWorldApp.java文件的保存目录及文件名。例如,如果要将HelloWorldApp.java保存在目录/tmp/examples/java中,只需输入/tmp/examples/java/HelloWorldApp.java并按Enter键即可。最后按Ctrl+X退出Pico。
4.?将源文件编译成.class文件
打开另一个shell窗口。编译源文件时,要将当前目录定位为源文件所在的目录。比如,如果源文件所在目录是/tmp/examples/java,只需在提示符下输入下述命令并按Enter键即可:

在提示符下输入pwd,就可显示当前目录。在这个例子中,当前目录已经变成/tmp/examples/java。输入ls即可显示创建的文件,如图1-17所示

现在来编译源文件。在提示符下输入下述命令并按Enter键:

编译器会生成字节码文件HelloWorld-
App.class。在提示符下输入ls就可显示创建的新文件,
如图1-18所示。生成.class文件后,就可以运行程序了。
5.?运行程序
在相同目录下,在提示符下输入下述命令:

如果结果如图1-19所示,就说明程序可以运行了。在上述过程中如果遇到问题,可参考1.4节。

时间: 2024-11-01 14:03:54

《Java语言导学(原书第6版)》一一1.2 “Hello World!”实例程序的相关文章

《数据结构与抽象:Java语言描述(原书第4版)》一2.1.2 一组核心方法

2.1.2 一组核心方法 基于Java语言数组实现的ADT包吸收了教室示例中展现的一些想法.由此得到了类ArrayBag,它实现了在程序清单1-1中见到过的接口BagInterface.接口中的每个公有方法对应于ADT包的一个操作.我们记得,接口为包中的对象定义了泛型T.我们在ArrayBag的定义中也用到了这个泛型.类ArrayBag的定义可能相当难懂.该类确实有不少的方法.对于这样的类,你不应该定义整个类,然后试图去测试它.而是应该先确定一组核心方法(core method)来实现并测试这些

《数据结构与抽象:Java语言描述(原书第4版)》一P.1 封装

P.1 封装 如果你想学习驾驶,那么对汽车的哪些描述对你最有用?显然不是描述它的发动机如何周而复始地获取空气和汽油,点燃空气和汽油的混合物,然后排出的过程.当你想学习驾驶时,这样的细节是不必要的.事实上,可以以你的方式获知这些细节.如果你想学习驾驶,最有用的汽车描述是如下的这些特点: 如果你将脚踩在油门踏板上,汽车将开得更快. 如果你将脚踩在制动踏板上,汽车将慢下来并最终停止. 如果你将方向盘向右转,汽车将右转. 如果你将方向盘向左转,汽车将左转. 就像你不需要告诉想开车的人发动机是如何工作的一

《数据结构与抽象:Java语言描述(原书第4版)》一练习

练习 1.说明程序清单1-3中给出的类PiggyBank的每个方法:说明方法的目的:描述它的参数:写前置条件.后置条件和方法头的伪代码.然后写一个用于这些方法的Java接口,包括javadoc风格的注释. 2.假定groceryBag是一个包,它被表示不同杂货名字的10个字符串填满了.写Java语句,计数groceryBag中"soup"的出现次数并全部删除.不要从包中删除任何其他的字符串.报告包中出现的"soup"的个数.groceryBag中可能不包含"

《数据结构与抽象:Java语言描述(原书第4版)》一P.4.3 统一建模语言

P.4.3 统一建模语言 图P-4中的用例图是更强大表示法的一部分,这个表示法称为统一建模语言(Unified Modeling Language,UML).设计人员使用UML来说明软件系统中必需的类及它们的关系.UML能给出复杂系统的整体视图,比用自然语言或程序设计语言描述更有效.例如,英语可能有二义性,而Java代码提供更多的细节.给出明确的类之间的交互图,是UML的强项之一.除了用例图之外,UML还能提供类图,类图将每个类的描述放在类似于CRC卡的方框中.方框内包含类名.它的属性(attr

《数据结构与抽象:Java语言描述(原书第4版)》一2.2.1 可变大小数组

2.2.1 可变大小数组 策略.当教室满了时,能容纳更多学生的一种办法是移到一间更大的教室.用类似的方式,当数组满了时,可以将它的内容移到一个更大的数组中.这个过程称为调整(resizing)数组大小.图2-7显示两个数组:一个是有5个连续内存单元的原始数组,另一个数组(两倍于原始数组大小)在计算机的另一块内存中.如果将数据从原始的小数组中复制到新的大数组的开头部分,得到的结果像是扩展了原来的数组一样.这种机制的唯一不足是新数组的名字:你想让它与原始数组同名.马上就会看到如何完成这个工作. 细节

《数据结构与抽象:Java语言描述(原书第4版)》一1.1 什么是包

1.1 什么是包 设想一个纸袋,或反复使用的布袋,甚至一个塑料袋.当人们购物.打包午餐或者吃土豆片时会用到袋子.袋子里装着东西.在日常用语中,包(也称为袋子--译者注)是一种容器.但在Java中,容器(container)是一个对象,它的类派生于标准类Container.这样的容器用在图形程序中.在Java中,不把包(bag)看作一种容器,而是一种集合.包与其他集合的区别是什么呢?包仅仅是含有项,但没有按某种方式规定项的次序,也允许有重复的项.大多数的行为可由其他类型的集合执行.当描述本章中设计

《数据结构与抽象:Java语言描述(原书第4版)》一1.2 说明一个包

可以使用UML将方法表示为: 且将这行添加到类图中.可以使用一个布尔值方法来测试包是否为空,同样该方法没有参数.用伪代码及UML描述这个方法的规格说明 及 将这行添加到类图中. 注:因为通过查看getCurrentSize是否返回0就能检测包何时为空,所以并不真的需要操作isEmpty.但是它是所谓的便利方法(convenience method),所以很多集合都提供这样一个操作.现在想向包中添加给定的对象.可以将这个方法命名为add,并有一个表示新项的参数.可以写出下列伪代码: 我们可能试图让

《数据结构与抽象:Java语言描述(原书第4版)》一2.1.3 实现核心方法

2.1.3 实现核心方法 数据域.在定义任何核心方法之前,需要考虑类的数据域.因为包要保存一组对象,所以一个域是这些对象的数组.数组的长度定义了包的容量.可以让客户指定这个容量,我们也可以提供一个默认容量.另外,我们想跟踪包中当前项的个数.所以可以为我们的类定义如下的数据域: 并将它们加到图1-2中类的UML表示中.得到的表示如图2-2所示. 程序设计技巧:终态数组 通过声明数组bag是类ArrayBag的一个终态数据成员,可知变量bag中的引用不能改变.虽然以这种方式声明数组是一种好的做法,但

《数据结构与抽象:Java语言描述(原书第4版)》一JI2.1 基础

JI2.1 基础 当在一个方法内发生异常时,该方法创建一个异常对象,并将它传给Java运行时系统.我们说方法抛出(throw)一个异常.被抛出的异常是发给程序的其他部分的一个信号,表示某些意外的事情发生了.根据异常类的类型,以及异常对象通过其方法告诉我们的信息,代码可以对其进行适当的响应处理.当发现并响应异常时,就是处理(handle)异常. 异常属于不同的类,不过所有这些类都是标准类Throwable的后代.Throwable在Java类库中,不需要import语句就可以使用.异常分为以下三组

《数据结构与抽象:Java语言描述(原书第4版)》一1.4 像使用自动贩卖机一样使用ADT

1.4 像使用自动贩卖机一样使用ADT 假定你站在一台自动贩卖机前,如图1-3所显示,或者更高级的一台,休息一下,然后从贩卖机中买些东西! 当站在自动贩卖机前时,会看到它的界面.投入硬币并且按下按钮,就能购物了.下面是对自动贩卖机的观察结果: 你仅能执行机器的界面提供给你的特定任务. 你必须理解这些任务--即你必须知道买一瓶汽水应该怎么办. 你不能访问机器内部,因为锁着的外壳封装了它. 即使你不知道内部将发生什么,但你可以使用机器. 如果有人用改进版替换了机器内部的机制但没改变界面,你仍然能用同