Java SE8 程序设计(第3版)英文版
  • 推荐0
  • 收藏2
  • 浏览845

Java SE8 程序设计(第3版)英文版

(美)Paul Deitel(保罗·戴特尔),(美) Harvey Deitel(哈维·戴特尔) (作者)  (译者)

  • 丛  书:原味精品书系
  • 书  号:978-7-121-27327-8
  • 出版日期:2016-04-05
  • 页  数:1084
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 原书名: Java SE8 for Programmers,3E
  • 原书号:0133891380
  • 维护人:张春雨
本书沿用了Deitel特色的“程序实况解说”,深入探讨了Java编程语言和JavaAPI。通过完整的语法着色、代码高亮、逐行代码的演练和程序输出,全面地介绍了测试程序的概念。书中首先介绍了使用早期Java类和对象的方法,然后迅速转移到更高级的主题,包括GUI、图形、异常处理、Lambda表达式、数据流、功能接口、对象序列化、并发性、泛型、泛型集合、JDBC等。本书包含数百个完整的Java可运行示例、数千行成熟的Java代码,总结出许多程序开发技巧,帮助你建立强大的应用程序。
以实用的、示例丰富的形式讲述:
Java SE 7和 SE 8
Lambda表达式、数据流、静态方法的默认界面与功能
类、对象、封装、继承、多态、接口
Swing和JavaFX的图形用户界面、图像
集成的异常处理
文件、数据流、对象序列化
多线程和多核性能的并发性
仿泛型和泛型集合
数据库(SQL和JDBC,JavaDB)
使用调试器和API文档
面向对象设计的ATM案例研究
……
推荐序
从1995年Java 1.0版本发布以来我就一直迷恋它,这种迷恋让我逐渐成为了Java开发人员、作家、演讲者、老师和Oracle Java技术大使。在这个过程中,我一直很荣幸能将Paul Deitel称为我的同事,并经常使用和推荐他的Java书籍。这些Java书籍的很多版次都被证明是学习专业课程不可或缺的教科书,所以我们一直使用它们来讲授Java 编程语言。
我认为这本书是很好的资源,一方面是因为它彻底而深入地覆盖了Java概念,另一方面是因为它对有效软件开发进行了必不可少的概念和实践的处理。
本书第3版最让我感到兴奋的一些特性如下:
?用一章专门介绍了Java Lambda表达式和流。首先简单地介绍了函数式编程,接着介绍了Java Lambda表达式,以及如何使用流在集合上执行函数式编程任务。
?本书从第一版就开始处理并发问题,而多核架构的出现让这个问题变得越来越重要。本书的并发性一章中包含一些定时示例(使用Java SE 8中引入的新日期/时间API类),这些示例表现出多核带来的性能提升(相对于单核)。
?JavaFX是Java的GUI/图形/多媒体技术的进一步发展,因此我很高兴能够看到Deitel以“程序实况解说”的教学方式来介绍JavaFX。
感谢Paul Deitel和Harvey Deitel的这本书为软件开发人员提供了良好的资源。
James L. Weaver
Oracle公司Java技术大使

前言
欢迎阅读本书。本书将向软件开发人员介绍最先进的计算技术。
我们专注于软件工程的最佳实践。本书沿用了Deitel特色的“程序实况解说”——用可以在Windows、Linux和OS X最新版本中运行的完整代码(而不是代码片段)来解释相关概念。每个完整的代码示例都伴随着现场样例执行。所有的源代码都可以从下面的网址下载
http://www.deitel.com/books/javafp3/
与作者保持联系
不管你在阅读本书的过程中遇到什么问题,都可以给我们发送邮件,邮箱为
deitel@deitel.com
要了解本书的最新信息,可以访问
http://www.deitel.com/books/jfp3
可以从以下网址订阅Deitel Buzz Online电子邮件新闻简报
http://www.deitel.com/newsletter/subscribe.html
还可以加入Deitel社交网站社区
?Facebook(http://www.deitel.com/deitelfan)
?Twitter(@deitel)
?Google+(http://google.com/+DeitelFan)
?YouTube(http://youtube.com/DeitelTV)
?LinkedIn(http://linkedin.com/company/deitel-&-associates)
模块化结构
本书适合具有高级语言编程背景的程序员阅读。本书的特色是具有以下模块化结构。
简介
?第1章 Java简介和一个Java应用程序的测试驱动
?第2章 Java应用程序简介、输入/输出和运算符
?第3章 类、对象、方法和字符串的简介
其他编程基础
?第4章 控制语句第一部分:赋值、++和--运算符
?第5章 控制语句第二部分:逻辑运算符
?第6章 方法:更深入的探讨
?第7章 数组和ArrayList
?第14章 字符串、字符和正则表达式
?第15章 文件、流和对象序列化
面向对象编程
?第8章 类和对象:更深入的探讨
?第9章 面向对象编程:继承
?第10章 面向对象编程:多态和接口
?第11章 异常处理:更深入的探讨
Swing和JavaFX图形用户界面、Java2D图形
?第12章 Swing GUI组件第一部分
?第13章 图形、Java 2D
?第19章 Swing GUI组件第二部分
?第22章 JavaFX GUI
泛型集合、Lambdas和流
?第16章 泛型集合
?第17章 Java SE 8 Lambdas和流
?第18章 泛型类和方法
并发/数据库
?第20章 并发
?第21章 使用JDBC访问数据库
面向对象设计
?第23章 ATM案例学习第一部分:使用UML的面向对象设计
?第24章 ATM案例学习第二部分:面向对象设计的实现
新特性
本书在前两版基础上所做的更新如下。
?在Java SE 7或者Java SE 8中都很容易使用。本书是随着Java SE 8的发布一起出版的。为了满足不同读者的需求,我们为对Java SE 7、Java SE 8或者对两者都感兴趣的专业人员设计了本书。我们将在第17章介绍Java SE 8特性(参见图1)。
图1 我们将要讨论的Java SE 8特性
?Java SE 8 Lambdas、流、具有默认和静态方法的接口。Java SE 8中最显著的新特性是Lambdas和辅助技术。在第17章你将会看到,使用Lambdas和流的函数式编程可以帮助你更快速、更简洁地编程。与以前的技术编写程序相比(参见图2),函数式编程的bug更少且更容易并行化(可以在多核系统上获得性能提升)。你将会看到,函数式编程让面向对象编程更具吸引力。
?Java SE 7的try-with-resources语句和AutoClosable接口。当你用自动关闭AutoClosable对象的try-with-resources语句使用这些对象时,它们会减少资源泄露的可能性。在本书中,我们使用try-with-resources和AutoClosable对象作为第15章的开头。
?Java安全性。我们是通过CERT Oracle Java安全编码标准来审查本书的:
http://bit.ly/CERTOracleSecureJava
要了解关于CERT的更多内容,请阅读“Java安全编程”部分。
?Java NIO API。我们更新了第15章的文件处理示例,以便使用Java NIO(新IO)API特性。
图2 Java SE 8 Lambdas和流的讨论和示例
?Java文档。我们在本书中提供了Java文档的链接,你可以从这些文档中了解更多关于我们介绍的各种主题的相关信息。Java SE 7文档的链接从如下网址开始:
http://docs.oracle.com/javase/7/
Java SE 8文档的链接从如下网址开始:
http://download.java.net/jdk8/
当Oracle发布Java SE 8时,这些链接可能会发生变化——可能会从如下网址开始:
http://docs.oracle.com/javase/8/
对于本书出版后的任何链接更改,我们都会将其发布在:
http://www.deitel.com/books/jfp3
Swing和JavaFX GUI、Java 2D图形
?Swing GUI和Java 2D图形。我们会在第12章和第19章讨论Java的Swing GUI。Swing目前处于维护模式——Oracle已经停止其开发,接下来只会提供bug修复,然而它仍然是Java的一部分,而且仍被广泛使用。行业中大多数基于GUI的遗留代码都是使用的Swing GUI。我们会在第13章讨论Java 2D图形。
?JavaFX GUI。JavaFX是Java的GUI、图形和多媒体技术的进一步发展。在第12章我们用的是Java FX 2.2(Java SE 7),使用的是Scene Builder——一种快速方便地创建JavaFX GUI的拖放工具。它是一个独立的工具,你既可以单独使用它,也可以在Java IDE中使用它。
并发
?最佳多核性能的并发。我们非常有幸邀请《Java并发编程实战》(Addison-Wesley)的合著者Brian Goetz作为我们的审稿人员。我们使用Java SE 8技术更新了第20章。我们增加了一个使用Java SE 8日期/时间API的parallelSort vs. sort示例,用于对每个操作计时并演示parallelSort在多核系统上的性能提高。我们还包含了使用时间/日期API的Java SE 8并行和序列流处理示例来显示性能提升。最后,我们添加了一个Java SE 8 CompletableFuture示例,它比较了长时间计算的串行和并行执行的相对性能。
?SwingWorker类。我们使用SwingWorker类来创建多线程用户界面。
?并发是一个挑战。存在着多种并发特性。我们指出了大多数开发人员应该使用的特性,并提出了那些应该留给专家使用的特性。
获取正确的货币金额
?货币金额。为了方便,我们在前面的章节中使用double类型来表示货币金额。由于double类型可能会导致错误的货币计算,因此我们使用更复杂的BigDecimal类来表示货币金额。我们会在第8章和第22章介绍BigDecimal类。
对象技术
?面向对象编程。我们使用早期的对象方法来回顾第1章中对象技术的基本概念和术语。读者会在第3章开发第一个自定义类和对象。
?早期对象的真实案例研究。早期的类和对象表示主要由Account、Student、AutoPolicy、Time、Employee、GradeBook、洗牌和发牌的案例研究组成,并逐渐引入更深入的面向对象概念。
?继承、接口、多态和组合。我们使用一系列真实的案例研究来说明这些面向对象概念,并解释了要创建优质的应用程序首先应该选择哪个概念。我们还会讨论Java SE 8对接口概念的改进。
?异常处理。在本书的前几章就包含了基本的异常处理,然后我们在第11章介绍了更深入的异常处理。异常处理对于创建“任务关键”和“业务关键”的应用程序来说非常重要。程序员需要关注的是:“当我调用用于完成工作的组件出现问题时会发生什么?该组件如何表示它出现了问题?”要使用一个Java组件,你不仅需要知道该组件在“事情顺利进展”时的行为,还要知道当“事情无法顺利进展”时该组件会抛出哪种异常。
?Array和ArrayList类。第7章包含了Array类(其中包含用于执行常见数组操作的方法)和ArrayList类(它实现了动态分配数组的数据结构)。这符合在学习如何定义自己的类的同时,使用现有的类进行大量练习的理念。
?案例研究:开发一个ATM的面向对象设计和Java实现。第23章和第24章包含使用UML(Unified Modeling Language,统一建模语言;为面向对象系统建模的行业标准图形化语言)来进行面向对象设计的案例研究。我们设计并实现了一个简单的自动取款机(ATM)软件。我们分析了一个指定如何构建系统的典型需求文档,确定了实现该系统所需要的类,包括这些类需要拥有的属性和这些类需要表现出的行为,并指定了这些类如何交互才能满足系统需求。我们根据设计创建出一个完整的Java实现。我们的一些Java专业课程的参与者经常说这是让他们顿悟的时刻——这个案例研究帮助他们将所有内容联系起来,并让他们真正了解了基于Java的面向对象编程。
泛型集合
?泛型集合表示。我们从第7章的泛型类ArrayList开始介绍。而第16~18章提供了对泛型集合更深入的处理——显示如何使用Java API的内置集合。我们介绍了如何实现泛型方法和类。而Lambdas表达式和流(第17章介绍)尤其适用于泛型集合。
数据库
?JDBC。第21章涵盖了JDBC,并使用了Java DB数据库管理系统。本章介绍了结构化查询语句(SQL),它主要由一个面向对象的案例研究组成,这个案例研究是开发一个由数据库驱动的、用于说明预处理语句的通讯录。
Java安全编程
人们很难创建出可以抵抗病毒、蠕虫和其他恶意软件攻击的、具有工业强度的系统。如今,通过互联网,这类攻击瞬间就可以在全球范围内造成影响。从开发周期的开始就将软件安全性考虑进来,可以大大减少漏洞。我们在讨论和代码示例中包含了各种Java安全编码实践。
人们创建了CERT Coordination Center(www.cert.org)来分析和及时应对攻击。CERT(Computer Emergency Response Team,计算机安全应急响应组)是一个由政府资助的组织,位于卡内基梅隆大学软件工程研究所。CERT会发布和推广各种流行编程语言的安全编码标准,以帮助软件开发人员实现具有工业强度的系统,从而避免会造成开放式系统受到攻击的编程实践。
我们要感谢Robert C. Seacord,他是CERT的安全编程管理员和卡内基梅隆大学计算机科学系的副教授。Seacord先生是我们C11 for Programmers一书的技术评审,他从安全角度审查了我们的C语言程序,并建议我们遵守CERT C语言安全编程标准。这方面的经验还对我们在C++11 for Programmers和本书中使用的编码实践产生了影响。
教学方法
本书包含数百个完整的可运行示例。我们强调的是程序的清晰性,并专注于构建工程设计良好的软件。
语法着色。为了增加可读性,我们为代码添加了语法阴影,这类似于大多数IDE和代码编辑器给代码的语法添加颜色。我们采用的语法着色约定是:
注释用常规字体表示。
关键字用粗字体表示。
常量和字面值用比关键字稍浅一点的黑体字来表示。
所有的其他代码用黑体表示。
代码高亮显示。在每个源代码程序中,关键代码段都被加了一个灰色的矩形框。
使用字体突出显示。为了便于参考,我们用粗体表示每个定义性出现的关键概念和索引的页面引用。我们用加粗的Helvetica字体强调屏幕组件(例如,File菜单)、用Lucida字体强调Java程序文本(例如,int x = 5;)。
网页存取。所有的源代码示例都可以从以下网址下载:
www.deitel.com/books/javafp3
www.pearsonhighered.com/deitel
目标。每章都包含一个Objectives(本章目标)列表。
插图/图。本书包含了大量的图表、线条图、UML图、程序和程序输出。
编程技巧。我们提供了编程技巧来帮助你关注程序开发的重要方面。这些技巧和实践是我们在7年的编程和企业培训经验中积累的精华。最佳编程实践
最佳编程实践让读者关注那些有助于编写更清晰、更易理解和维护的程序的技术。
常见编程错误
指出这些常见的编程错误可以减少读者犯类似错误的可能性。
错误预防技巧
这些技巧包括揭露和删除程序中bug的建议;大多数技巧描述的是如何预防将bug带入Java程序中。
性能技巧
这些技巧强调的是如何让程序运行得更快或者尽量减少它们占用的内存。
可移植性技巧
可移植性技巧可以帮助你编写能够在各种平台上运行的代码。
软件工程意见
软件工程意见强调的是影响软件系统(尤其是大型系统)构建的架构和设计问题。
外观观察
外观观察强调的是图形用户界面的约定。这些观察可以帮助你设计具有吸引力的、对用户友好的、符合行业标准的用户界面。
索引。我们包含了大量的索引。我们使用加粗的页号强调关键术语的定义性出现。
本书使用的软件
本书中需要的所有软件都可以免费从互联网上下载。参见后面的“阅读本书之前的准备”部分来获取每个下载的链接。
本书的大部分示例代码都是用免费的Java Standard Edition Development Kit (JDK) 7编写的。对于Java SE 8模块,我们使用的是OpenJDK的JDK 8早期试用版本。我们在第22章还使用了Netbeans IDE。要了解更多信息,请参见后面的“阅读本书之前的准备”部分。
Java基础:LiveLessons视频培训产品第二版的第I部分、第II部分、第III部分和第IV部分
我们的“Java基础:LiveLessons视频培训产品第二版的第I部分、第II部分、第III部分和第IV部分”(2014年夏季)介绍了当你开始使用Java构建健壮且强大的软件时所需要知道的内容。它包含了三十多个小时的与本书同步的专家培训视频。要了解如何从Informit和Udemy在线购买Deitel LiveLessons视频产品的更多信息,请访问:
http://www.deitel.com/livelessons
如果你已经订阅了Safari Books Online(www.safaribooksonline.com),你还可以获取我们的LiveLessons视频。
致谢
我们要感谢Deitel & Associates有限公司的Abbey Deitel和Barbara Deitel为这个项目投入了大量时间。Abbey参与撰写了本书的第1章和这篇前言,她和Barbara仔细研究了Java SE 8的新功能。
我们有幸与Prentice Hall/Pearson的出版专家团队共同完成该项目。我们要感谢培生科技出版集团的主编Mark L. Taub 19年来给我们的指导和为此付出的精力。我们要感谢Carole Snyder招募了优秀的Java社区成员来进行审稿,并出色地完成了管理审稿过程的工作;感谢Chuti Prasertsith为本书设计的封面;感谢John Fuller管理本书的出版工作。
审稿人员
我们要感谢审稿人员对我们新版本付出的努力——优秀的Oracle团队成员、Oracle Java冠军程序员、其他行业的专家和学者。他们完成了对本书文本和程序的审查,并为提高本书的表述方式提供了无数建议。
第3版本审稿人员:Lance Andersen(Oracle公司)、Danny Coward博士(Oracle公司)、Brian Goetz(Oracle公司)、Evan Golub(马里兰大学)、Huiwei Guan博士(北岸社区学院计算机信息科学系教授)、Manfred Riem(Java Champion)、Simon Ritter(Oracle公司)、Robert C. Seacord(CERT,卡内基梅隆大学的软件工程研究所)、Khallai Taylor(特里顿学院助理教授、孤星学院客座教授)、Jorge Vargas(Java Champion)、Johan Vos(LodgON、Oracle Java Champion)和James L. Weaver(Oracle公司,Pro JavaFX 2一书的作者)。
新版本的其他审稿人员:Soundararajan Angusamy(Sun Microsystems公司)、Joseph Bowbeer(顾问)、William E. Duncan(路易斯安那州立大学)、Diana Franklin(加州大学圣塔芭芭拉分校)、Edward F. Gehringer(北卡罗莱纳州立大学)、Ric Heishman(乔治梅森大学)、Heinz Kabutz博士(JavaSpecialists.eu)、Patty Kraft(圣地亚哥州立大学)、Lawrence Premkumar(Sun Microsystems公司)、Tim Margush(阿克伦大学)、Sue McFarland Metzger(维拉诺瓦大学)、Shyamal Mitra(得克萨斯大学奥斯汀分校)、Peter Pilgrim(顾问)、Manjeet Rege博士(罗彻斯特理工学院)、Susan Rodger(杜克大学)、Amr Sabry(印第安纳大学)、José Antonio González Seco(西班牙安达卢西亚议会议员)、Sang Shin(Sun Microsystems公司)、S. Sivakumar(Astra Infotech Private Limited公司)、Raghavan “Rags” Srinivas(Intuit)、Monica Sweat(乔治亚理工学院)、Vinod Varma(Astra Infotech Private Limited公司)和Alexander Zuev(Sun Microsystems公司)。
对Brian Goetz的特别感谢
我们很荣幸地邀请Brian Goetz(Oracle Java SE 8 Lambda项目的Java语言架构和规范负责人、《Java并发编程实战》一书的作者)对本书进行了详细的审查。他仔细地阅读了每一章,并提供了非常有益的见解和建设性的意见。本书中所有残留的错误都是我们的责任。
我们真诚地欢迎读者提出可以提高本书质量的意见、批评、更正和建议。请将它们发送到:
deitel@deitel.com
我们会及时回复你。我们在编写本书的过程中享受到了很多乐趣,我们希望你也能在本书的阅读中得到乐趣。
Paul Deitel
Harvey Deitel
作者简介
Paul Deitel,Deitel & Associates有限公司的CEO兼CTO,毕业于麻省理工学院,主修信息技术。他获得了Java认证程序员和Java认证开发员称号,并且是一名Oracle Java冠军程序员。在Deitel & Associate有限公司工作的过程中,他已经为世界各地的客户提供了数百节编程课程,这些客户包括思科、IBM、西门子、Sun Microsystems、戴尔、Fidelity、肯尼迪航天中心、美国国家强风暴实验室、白沙导弹试验场、Rogue Wave Software、波音公司、SunGard Higher Education、北电网络公司、彪马、iRobot、Invensys等。他和本书的合著者Harvey M. Deitel博士是全球畅销编程语言教材、专业书籍和视频的作者。
Harvey Deitel博士,Deitel & Associates有限公司的董事长和首席战略官,在计算机领域拥有50多年的经验。Deitel博士获得了麻省理工学院电子工程专业的学士和硕士学位,并获得了波士顿大学的数学博士学位。他拥有丰富的大学教学经验,在1991年与儿子Paul Deitel创办Deitel & Associates有限公司之前,他是波士顿大学计算机科学系的主任并获得了终身任职权。Deitel的出版物获得了国际上的认可,并被翻译为日语、德语、俄语、西班牙语、法语、波兰语、意大利语、简体中文、繁体中文、韩语、葡萄牙语、希腊语、乌尔都语和土耳其语出版。Deitel博士为很多大公司、学术研究机构、政府机关和军方提供了数百场专业编程讲座。
Deitel & Associates有限公司简介
由Paul Deitel和Harvey Deitel创立的Deitel & Associates有限公司是一家国际知名的写作、企业培训和软件开发公司,该公司专注于计算机编程语言、对象技术、手机应用程序开发,以及Internet和Web软件技术方面的培训和写作。公司的培训客户包括很多全球最大的公司、政府机关、军队和学术研究机构。该公司向全球客户提供了由讲师主导的主要编程语言和平台课程,包括Java、Android应用程序开发、Objective-C和iOS应用程序开发、C++、C、Visual C#、Visual Basic、Visual C++、Python、对象技术、互联网和Web编程,并且还在不断提供其他编程语言和软件开发课程。
通过与Prentice Hall/Pearson 39年的合作,Deitel & Associates有限公司出版了很多一流的编程教程、专业书籍(印刷和电子书格式)和LiveLessons视频课程。读者可以通过以下邮件地址联系Deitel & Associates有限公司和作者:
deitel@deitel.com
要了解Deitel Dive-Into系列企业培训课程的更多信息,请访问:
http://www.deitel.com/training
如果贵机构希望获得关于由讲师主导的现场培训的相关建议,可发送邮件到deitel@deitel.com。
想购买Deitel书籍和LiveLessons视频培训的个人可以访问www.deitel.com。公司、政府机关、军队和学术研究组织的大宗团购应该直接与Pearson联系。要了解更多信息,请访问:
http://www.informit.com/store/sales.aspx

阅读本书之前的准备
这部分内容包含你在使用本书之前应该知道的信息。这里介绍的任何信息的更新都会被发布在:
http://www.deitel.com/books/javafp3
此外,我们还提供了用于演示“阅读本书之前的准备”一节使用说明的Dive-Into视频(可以在2014年秋季课程上获取)。
字体和命名约定
我们使用字体来区分屏幕组件(例如,菜单名和菜单项)和Java代码或者命令。我们的约定是:用sans-serif bold Helvetica字体(例如,File菜单)强调屏幕组件,用sans-serif Lucida字体(例如,System.out.println())强调Java代码和命令。
本书使用的软件
本书使用的所有软件都可以免费从互联网上获取。除了专门针对Java SE 8的示例外,所有代码都使用Java SE 7和Java SE 8 JDK(Java标准版开发工具包)进行了测试。
Java标准版开发工具包7(JDK 7)
Windows、OS X和Linux平台的JDK 7可以从如下网址获取:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Java标准版开发工具包8(JDK 8)
在本书出版时,Windows、OS X和Linux平台的最新版JDK 8可以从如下网址获取:
https://jdk8.java.net/download.html
当JDK 8的最终版发布时,可以从如下网址获取:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
JDK安装说明
JDK安装程序下载完成后,请务必按照JDK安装说明在你的平台上安装JDK,该安装说明的网址如下:
http://docs.oracle.com/javase/7/docs/webnotes/install/index.html
虽然这些安装说明是关于JDK 7的,但它们同样适用于JDK 8——你需要更新所有版本特定说明中的JDK版本号。
设置PATH环境变量
计算机中的PATH环境变量用于指定查找应用程序时要检索的计算机目录,例如允许你编译和运行Java程序的应用程序(分别称为javac和java)。按照安装说明在你的平台上安装Java,确保你能够正确地设置PATH环境变量。设置环境变量的步骤根据操作系统的不同而有所不同,有时不同的操作系统版本(例如,Windows 7和Windows 8)也会造成设置环境变量步骤的不同。各种平台的说明被列在如下网址中:
http://www.java.com/en/download/help/path.xml
如果你没有正确地在Windows和一些Linux安装中设置PATH变量,那么当你使用JDK的工具时就会收到如下消息:
“java” is not recognized as an internal or external command, operable program or batch file.
在这种情况下,需要返回设置PATH的安装说明并检查你的步骤。如果你下载了JDK的新版本,那么你可能需要在PATH变量中修改JDK安装目录的名称。
JDK安装目录和bin子目录
JDK的安装目录根据平台的不同而有所不同。下面列出的目录用于Oracle的JDK 7 update 51。
?Windows上的32位JDK:
C:\Program Files (x86)\Java\jdk1.7.0_51
?Windows上的64位JDK:
C:\Program Files\Java\jdk1.7.0_51
?Mac OS X:
/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
?Ubuntu Linux:
/usr/lib/jvm/java-7-oracle
根据你使用平台的不同,当你使用不同的JDK 7或者JDK 8时,JDK安装文件夹的名称可能有所不同。对于Linux来说,安装位置取决于你使用的安装程序和你使用的Linux版本。我们使用的是Ubuntu Linux。PATH环境变量必须指向JDK安装目录的bin子目录。
在设置PATH时,一定要为你安装的JDK版本使用正确的JDK安装目录名——当新的JDK版本可用时,JDK安装目录名就会改变,以便包括更新的版本号。例如,在我们编写这部分内容时,最新的JDK 7版本是update 51。因此,JDK安装目录名以“_51”结束。
设置CLASSPATH环境变量
当你尝试运行Java程序时,如果你收到这样一条消息:
Exception in thread "main" java.lang.NoClassDefFoundError: YourClass
就表示你的系统中有一个必须要修改的CLASSPATH环境变量。要修复这个错误,就要按照设置PATH环境变量的步骤来定位CLASSPATH变量,然后编辑这个变量的值,使其包含当前目录——通常表示为一个点(.)。对于Windows平台来说,需要在CLASSPATH值的开头添加(这些字符的前后都没有空格)如下内容:
.;
对于其他平台来说,用合适的路径分隔符取代这个分号——通常是一个冒号(:)。
设置JAVA_HOME环境变量
第21章使用的Java DB数据库要求你将JAVA_HOME环境变量设置到你的JDK安装目录中。你用于设置PATH的步骤同样适用于设置其他环境变量,例如JAVA_HOME。
Java集成开发环境(IDE)
有很多可用于Java编程的Java集成开发环境(IDE)。因此,本书中的大多数示例都只使用JDK命令行工具。我们提供了介绍如何下载、安装和使用3种流行IDE的Dive-Into视频(可以在2014年秋季课程中获取)——NetBeans、Eclipse和IntelliJ IDEA。我们在第22章使用的是NetBeans。
NetBeans下载
你可以从如下网址下载JDK/NetBeans包:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
与JDK绑定在一起的NetBeans版本是用于Java SE开发的。在线的JavaServer Faces(JSF)和网络服务章节使用的是NetBeans的Java Enterprise Edition(Java EE)版本,其下载地址如下:
https://netbeans.org/downloads/
这个版本同时支持Java SE和Java EE开发。
Eclipse下载
你可以从如下网址下载Eclipse IDE:
https://www.eclipse.org/downloads/
Eclipse IDE既可以供Java开发人员进行Java SE开发,又可以供Java EE开发人员进行Java Enterprise Edition(Java EE)开发(例如,JSF和网络服务),也就是说,这个版本同时支持Java SE和Java EE开发。
IntelliJ IDEA社区版下载
你可以从如下网址下载免费的IntelliJ IDEA社区版:
http://www.jetbrains.com/idea/download/index.html
免费版本只支持Java SE开发。
获取代码示例
本书的代码示例可以从如下网址下载(位于“Download Code Examples and Other Premium Content”标题下):
http://www.deitelcom/books.javafp3
这些代码示例还可以从如下网址下载:
http://www.pearsonhighered.com/deitel
当你下载ZIP压缩文件时,要写下你在电脑上保存它的位置。
使用ZIP提取工具或者操作系统的内置功能来提取examples.zip的内容,例如7-Zip(www.7-zip.org)、WinZip(www.winzip.com)。本书中的说明都假定这些代码示例位于:
?
Windows的C:\examples中
?
Linux用户账户主文件夹的examples子文件夹中
?
Mac OS X文稿文件夹的examples子文件夹中
Java的Nimbus外观
Java捆绑了一个称为Nimbus的跨平台外观。对于使用Swing图形用户界面(例如,第12章和第19章)的程序来说,我们将测试机配置为使用Nimbus作为默认外观。
为了将Nimbus设置为所有Java应用程序的默认外观,你必须同时在JDK安装文件夹和JRE安装文件夹的lib文件夹中创建一个称为swing.properties的文本文件。将下面的一行代码放置在这个文件中:
swing.defaultlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel
要了解定位这些文件夹的更多信息,请访问http://docs.oracle.com/javase/7/docs/webnotes/install/index.html。[注意:除了独立的JRE外,你的JDK安装文件夹中还嵌套着一个JRE。如果你正在使用一个依赖于JDK的IDE(例如,NetBeans),你可能还需要将swing.properties文件放置在嵌套jre文件夹的lib文件夹中。]
现在你已经准备好使用本书来开始你的Java学习了。我们希望你喜欢这本书!

目录

目录
推荐序
前言
阅读本书之前的准备
1 Introduction to Java and Test-Driving a Java Application
1.1 Introduction
1.2 Object Technology Concepts
1.2.1 The Automobile as an Object
1.2.2 Methods and Classes
1.2.3 Instantiation
1.2.4 Reuse
1.2.5 Messages and Method Calls
1.2.6 Attributes and Instance Variables
1.2.7 Encapsulation and Information Hiding
1.2.8 Inheritance
1.2.9 Interfaces
1.2.10 Object-Oriented Analysis and Design (OOAD)
1.2.11 The UML (Unified Modeling Language)
1.3 Open Source Software
1.4 Java
1.5 A Typical Java Development Environment
1.6 Test-Driving a Java Application
1.7 Software Technologies
1.8 Keeping Up-to-Date with Information Technologies
2 Introduction to Java Applications; Input/Output and Operators
2.1 Introduction
2.2 Your First Program in Java: Printing a Line of Text
2.3 Modifying Your First Java Program
2.4 Displaying Text with printf
2.5 Another Application: Adding Integers
2.6 Arithmetic
2.7 Decision Making: Equality and Relational Operators
2.8 Wrap-Up
3 Introduction to Classes, Objects, Methods and Strings
3.1 Introduction
3.2 Instance Variables, set Methods and get Methods
3.2.1 Account Class with an Instance Variable, a set Method and a get Method
3.2.2 AccountTest Class That Creates and Uses an Object of Class Account
3.2.3 Compiling and Executing an App with Multiple Classes
3.2.4 Account UML Class Diagram with an Instance Variable and set and get Methods
3.2.5 Additional Notes on Class AccountTest
3.2.6 Software Engineering with private Instance Variables and public set and get Methods
3.3 Primitive Types vs. Reference Types
3.4 Account Class: Initializing Objects with Constructors
3.4.1 Declaring an Account Constructor for Custom Object Initialization
3.4.2 Class AccountTest : Initializing Account Objects When They’re Created
3.5 Account Class with a Balance; Floating-Point Numbers
3.5.1 Account Class with a balance Instance Variable of Type double
3.5.2 AccountTest Class to Use Class Account
3.6 Wrap-Up
4 Control Statements: Part 1; Assignment, ++ and -- Operators
4.1 Introduction
4.2 Control Structures
4.3 if Single-Selection Statement
4.4 if … else Double-Selection Statement
4.5 Student Class: Nested if … else Statements
4.6 while Repetition Statement
4.7 Counter-Controlled Repetition
4.8 Sentinel-Controlled Repetition
4.9 Nested Control Statements
4.10 Compound Assignment Operators
4.11 Increment and Decrement Operators
4.12 Primitive Types
4.13 Wrap-Up
5 Control Statements: Part 2; Logical Operators
5.1 Introduction
5.2 Essentials of Counter-Controlled Repetition
5.3 for Repetition Statement
5.4 Examples Using the for Statement
5.5 do … while Repetition Statement
5.6 switch Multiple-Selection Statement
5.7 Class AutoPolicy Case Study: String s in switch Statements
5.8 break and continue Statements
5.9 Logical Operators
5.10 Wrap-Up
6 Methods: A Deeper Look
6.1 Introduction
6.2 Program Modules in Java
6.3 static Methods, static Fields and Class Math
6.4 Declaring Methods with Multiple Parameters
6.5 Notes on Declaring and Using Methods
6.6 Argument Promotion and Casting
6.7 Java API Packages
6.8 Case Study: Secure Random-Number Generation
6.9 Case Study: A Game of Chance; Introducing enum Types
6.10 Scope of Declarations
6.11 Method Overloading
6.12 Wrap-Up
7 Arrays and ArrayLists
7.1 Introduction
7.2 Arrays
7.3 Declaring and Creating Arrays
7.4 Examples Using Arrays
7.4.1 Creating and Initializing an Array
7.4.2 Using an Array Initializer
7.4.3 Calculating the Values to Store in an Array
7.4.4 Summing the Elements of an Array
7.4.5 Using Bar Charts to Display Array Data Graphically
7.4.6 Using the Elements of an Array as Counters
7.4.7 Using Arrays to Analyze Survey Results
7.5 Exception Handling: Processing the Incorrect Response
7.5.1 The try Statement
7.5.2 Executing the catch Block
7.5.3 toString Method of the Exception Parameter
7.6 Case Study: Card Shuffling and Dealing Simulation
7.7 Enhanced for Statement
7.8 Passing Arrays to Methods
7.9 Pass-By-Value vs. Pass-By-Reference
7.10 Case Study: Class GradeBook Using an Array to Store Grades
7.11 Multidimensional Arrays
7.12 Case Study: Class GradeBook Using a Two-Dimensional Array
7.13 Variable-Length Argument Lists
7.14 Using Command-Line Arguments
7.15 Class Arrays
7.16 Introduction to Collections and Class ArrayList
7.17 Wrap-Up
8 Classes and Objects: A Deeper Look
8.1 Introduction
8.2 Time Class Case Study
8.3 Controlling Access to Members
8.4 Referring to the Current Object’s Members with the this Reference
8.5 Time Class Case Study: Overloaded Constructors
8.6 Default and No-Argument Constructors
8.7 Notes on Set and Get Methods
8.8 Composition
8.9 enum Types
8.10 Garbage Collection
8.11 static Class Members
8.12 static Import
8.13 final Instance Variables
8.14 Time Class Case Study: Creating Packages
8.15 Package Access
8.16 Using BigDecimal for Precise Monetary Calculations
8.17 Wrap-Up
9 Object-Oriented Programming: Inheritance
9.1 Introduction
9.2 Superclasses and Subclasses
9.3 protected Members
9.4 Relationship Between Superclasses and Subclasses
9.4.1 Creating and Using a CommissionEmployee Class
9.4.2 Creating and Using a BasePlusCommissionEmployee Class
9.4.3 Creating a CommissionEmployee – BasePlusCommissionEmployee Inheritance Hierarchy
9.4.4 CommissionEmployee – BasePlusCommissionEmployee Inheritance Hierarchy Using protected Instance Variables
9.4.5 CommissionEmployee – BasePlusCommissionEmployee Inheritance Hierarchy Using private Instance Variables
9.5 Constructors in Subclasses
9.6 Class Object
9.7 Wrap-Up
10 Object-Oriented Programming: Polymorphism and Interfaces
10.1 Introduction
10.2 Polymorphism Examples
10.3 Demonstrating Polymorphic Behavior
10.4 Abstract Classes and Methods
10.5 Case Study: Payroll System Using Polymorphism
10.5.1 Abstract Superclass Employee
10.5.2 Concrete Subclass SalariedEmployee
10.5.3 Concrete Subclass HourlyEmployee
10.5.4 Concrete Subclass CommissionEmployee
10.5.5 Indirect Concrete Subclass BasePlusCommissionEmployee
10.5.6 Polymorphic Processing, Operator instanceof and Downcasting
10.6 Allowed Assignments Between Superclass and Subclass Variables
10.7 final Methods and Classes
10.8 A Deeper Explanation of Issues with Calling Methods from Constructors
10.9 Creating and Using Interfaces
10.9.1 Developing a Payable Hierarchy
10.9.2 Interface Payable
10.9.3 Class Invoice
10.9.4 Modifying Class Employee to Implement Interface Payable
10.9.5 Modifying Class SalariedEmployee for Use in the Payable Hierarchy
10.9.6 Using Interface Payable to Process Invoice s and Employees Polymorphically
10.9.7 Some Common Interfaces of the Java API
10.10 Java SE 8 Interface Enhancements
10.10.1 default Interface Methods
10.10.2 static Interface Methods
10.10.3 Functional Interfaces
10.11 Wrap-Up
11 Exception Handling: A Deeper Look
11.1 Introduction
11.2 Example: Divide by Zero without Exception Handling
11.3 Exception Handling: ArithmeticExceptions and InputMismatchExceptions
11.4 When to Use Exception Handling
11.5 Java Exception Hierarchy
11.6 finally Block
11.7 Stack Unwinding and Obtaining Information from an Exception Object 322
11.8 Chained Exceptions
11.9 Declaring New Exception Types
11.10 Preconditions and Postconditions
11.11 Assertions
11.12 try -with-Resources: Automatic Resource Deallocation
11.13 Wrap-Up
12 Swing GUI Components: Part
12.1 Introduction
12.2 Java’s Nimbus Look-and-Feel
12.3 Simple GUI-Based Input/Output with JOptionPane
12.4 Overview of Swing Components
12.5 Displaying Text and Images in a Window
12.6 Text Fields and an Introduction to Event Handling with Nested Classes
12.7 Common GUI Event Types and Listener Interfaces
12.8 How Event Handling Works
12.9 JButton
12.10 Buttons That Maintain State
12.10.1 JCheckBox
12.10.2 JRadioButton
12.11 JComboBox ; Using an Anonymous Inner Class for Event Handling
12.12 JList
12.13 Multiple-Selection Lists
12.14 Mouse Event Handling
12.15 Adapter Classes
12.16 JPanel Subclass for Drawing with the Mouse
12.17 Key Event Handling
12.18 Introduction to Layout Managers
12.18.1 FlowLayout
12.18.2 BorderLayout
12.18.3 GridLayout
12.19 Using Panels to Manage More Complex Layouts
12.20 JTextArea
12.21 Wrap-Up
13 Graphics and Java 2D
13.1 Introduction
13.2 Graphics Contexts and Graphics Objects
13.3 Color Control
13.4 Manipulating Fonts
13.5 Drawing Lines, Rectangles and Ovals
13.6 Drawing Arcs
13.7 Drawing Polygons and Polylines
13.8 Java 2D API
13.9 Wrap-Up
14 Strings, Characters and Regular Expressions
14.1 Introduction
14.2 Fundamentals of Characters and Strings
14.3 Class String
14.3.1 String Constructors
14.3.2 String Methods length , charAt and getChars
14.3.3 Comparing Strings
14.3.4 Locating Characters and Substrings in Strings
14.3.5 Extracting Substrings from Strings
14.3.6 Concatenating Strings
14.3.7 Miscellaneous String Methods
14.3.8 String Method valueOf
14.4 Class StringBuilder
14.4.1 StringBuilder Constructors
14.4.2 StringBuilder Methods length , capacity , setLength and ensureCapacity
14.4.3 StringBuilder Methods charAt , setCharAt , getChars and reverse
14.4.4 StringBuilder append Methods
14.4.5 StringBuilder Insertion and Deletion Methods
14.5 Class Character
14.6 Tokenizing String s
14.7 Regular Expressions, Class Pattern and Class Matcher
14.8 Wrap-Up
15 Files, Streams and Object Serialization
15.1 Introduction
15.2 Files and Streams
15.3 Using NIO Classes and Interfaces to Get File and Directory Information
15.4 Sequential-Access Text Files
15.4.1 Creating a Sequential-Access Text File
15.4.2 Reading Data from a Sequential-Access Text File
15.4.3 Case Study: A Credit-Inquiry Program
15.4.4 Updating Sequential-Access Files
15.5 Object Serialization
15.5.1 Creating a Sequential-Access File Using Object Serialization
15.5.2 Reading and Deserializing Data from a Sequential-Access File
15.6 Opening Files with JFileChooser
15.7 (Optional) Additional java.io Classes
15.7.1 Interfaces and Classes for Byte-Based Input and Output
15.7.2 Interfaces and Classes for Character-Based Input and Output
15.8 Wrap-Up
16 Generic Collections
16.1 Introduction
16.2 Collections Overview
16.3 Type-Wrapper Classes
16.4 Autoboxing and Auto-Unboxing
16.5 Interface Collection and Class Collections
16.6 Lists
16.6.1 ArrayList and Iterator
16.6.2 LinkedList
16.7 Collections Methods
16.7.1 Method sort
16.7.2 Method shuffle
16.7.3 Methods reverse , fill , copy , max and min
16.7.4 Method binarySearch
16.7.5 Methods addAll , frequency and disjoint
16.8 Stack Class of Package java.util
16.9 Class PriorityQueue and Interface Queue
16.10 Sets
16.11 Maps
16.12 Properties Class
16.13 Synchronized Collections
16.14 Unmodifiable Collections
16.15 Abstract Implementations
16.16 Wrap-Up
17 Java SE 8 Lambdas and Streams
17.1 Introduction
17.2 Functional Programming Technologies Overview
17.2.1 Functional Interfaces
17.2.2 Lambda Expressions
17.2.3 Streams
17.3 IntStream Operations
17.3.1 Creating an IntStream and Displaying Its Values with the forEach Terminal Operation
17.3.2 Terminal Operations count , min , max , sum and average
17.3.3 Terminal Operation reduce
17.3.4 Intermediate Operations: Filtering and Sorting IntStream Values
17.3.5 Intermediate Operation: Mapping
17.3.6 Creating Streams of int s with IntStream Methods range and rangeClosed
17.4 Stream Manipulations
17.4.1 Creating a Stream
17.4.2 Sorting a Stream and Collecting the Results
17.4.3 Filtering a Stream and Storing the Results for Later Use
17.4.4 Filtering and Sorting a Stream and Collecting the Results
17.4.5 Sorting Previously Collected Results
17.5 Stream Manipulations
17.5.1 Mapping String s to Uppercase Using a Method Reference
17.5.2 Filtering String s Then Sorting Them in Case-Insensitive Ascending Order
17.5.3 Filtering String s Then Sorting Them in Case-Insensitive Descending Order
17.6 Stream Manipulations
17.6.1 Creating and Displaying a List
17.6.2 Filtering Employee s with Salaries in a Specified Range
17.6.3 Sorting Employee s By Multiple Fields
17.6.4 Mapping Employee s to Unique Last Name String s
17.6.5 Grouping Employee s By Department
17.6.6 Counting the Number of Employee s in Each Department
17.6.7 Summing and Averaging Employee Salaries
17.7 Creating a Stream from a File
17.8 Generating Streams of Random Values
17.9 Lambda Event Handlers
17.10 Additional Notes on Java SE 8 Interfaces
17.11 Java SE 8 and Functional Programming Resources
17.12 Wrap-Up
18 Generic Classes and Methods
18.1 Introduction
18.2 Motivation for Generic Methods
18.3 Generic Methods: Implementation and Compile-Time Translation
18.4 Additional Compile-Time Translation Issues: Methods That Use a Type Parameter as the Return Type
18.5 Overloading Generic Methods
18.6 Generic Classes
18.7 Raw Types
18.8 Wildcards in Methods That Accept Type Parameters
18.9 Wrap-Up
19 Swing GUI Components: Part
19.1 Introduction
19.2 JSlider
19.3 Understanding Windows in Java
19.4 Using Menus with Frames
19.5 JPopupMenu
19.6 Pluggable Look-and-Feel
19.7 JDesktopPane and JInternalFrame
19.8 JTabbedPane
19.9 BoxLayout Layout Manager
19.10 GridBagLayout Layout Manager
19.11 Wrap-Up
20 Concurrency
20.1 Introduction
20.2 Thread States and Life Cycle
20.2.1 New and Runnable States
20.2.2 Waiting State
20.2.3 Timed Waiting State
20.2.4 Blocked State
20.2.5 Terminated State
20.2.6 Operating-System View of the Runnable State
20.2.7 Thread Priorities and Thread Scheduling
20.2.8 Indefinite Postponement and Deadlock
20.3 Creating and Executing Threads with the Executor Framework
20.4 Thread Synchronization
20.4.1 Immutable Data
20.4.2 Monitors
20.4.3 Unsynchronized Mutable Data Sharing
20.4.4 Synchronized Mutable Data Sharing—Making Operations Atomic
20.5 Producer/Consumer Relationship without Synchronization
20.6 Producer/Consumer Relationship: ArrayBlockingQueue
20.7 (Advanced) Producer/Consumer Relationship with synchronized , wait , notify and notifyAll
20.8 (Advanced) Producer/Consumer Relationship: Bounded Buffers
20.9 (Advanced) Producer/Consumer Relationship: The Lock and Condition Interfaces
20.10 Concurrent Collections
20.11 Multithreading with GUI: SwingWorker
20.11.1 Performing Computations in a Worker Thread: Fibonacci Numbers
20.11.2 Processing Intermediate Results: Sieve of Eratosthenes
20.12 sort / parallelSort Timings with the Java SE 8 Date/Time API
20.13 Java SE 8: Sequential vs. Parallel Streams
20.14 (Advanced) Interfaces Callable and Future
20.15 (Advanced) Fork/Join Framework
20.16 Wrap-Up
21 Accessing Databases with JDBC
21.1 Introduction
21.2 Relational Databases
21.3 A books Database
21.4 SQL
21.4.1 Basic SELECT Query
21.4.2 WHERE Clause
21.4.3 ORDER BY Clause
21.4.4 Merging Data from Multiple Tables: INNER JOIN
21.4.5 INSERT Statement
21.4.6 UPDATE Statement
21.4.7 DELETE Statement
21.5 Setting up a Java DB Database
21.5.1 Creating the Chapter’s Databases on Windows
21.5.2 Creating the Chapter’s Databases on Mac OS X
21.5.3 Creating the Chapter’s Databases on Linux
21.6 Manipulating Databases with JDBC
21.6.1 Connecting to and Querying a Database
21.6.2 Querying the books Database
21.7 RowSet Interface
21.8 PreparedStatement s
21.9 Stored Procedures
21.10 Transaction Processing
21.11 Wrap-Up
22 JavaFX GUI
22.1 Introduction
22.2 JavaFX Scene Builder and the NetBeans IDE
22.3 JavaFX App Window Structure
22.4 Welcome App—Displaying Text and an Image
22.4.1 Creating the App’s Project
22.4.2 NetBeans Projects Window—Viewing the Project Contents
22.4.3 Adding an Image to the Project
22.4.4 Opening JavaFX Scene Builder from NetBeans
22.4.5 Changing to a VBox Layout Container
22.4.6 Configuring the VBox Layout Container
22.4.7 Adding and Configuring a Label
22.4.8 Adding and Configuring an ImageView
22.4.9 Running the Welcome App
22.5 Tip Calculator App—Introduction to Event Handling
22.5.1 Test-Driving the Tip Calculator App
22.5.2 Technologies Overview
22.5.3 Building the App’s GUI
22.5.4 TipCalculator Class
22.5.5 TipCalculatorController Class
22.6 Wrap-Up
23 ATM Case Study, Part 1: Object-Oriented Design with the UML
23.1 Case Study Introduction
23.2 Examining the Requirements Document
23.3 Identifying the Classes in a Requirements Document
23.4 Identifying Class Attributes
23.5 Identifying Objects’ States and Activities
23.6 Identifying Class Operations
23.7 Indicating Collaboration Among Objects
23.8 Wrap-Up
24 ATM Case Study Part 2: Implementing an Object-Oriented Design
24.1 Introduction
24.2 Starting to Program the Classes of the ATM System
24.3 Incorporating Inheritance and Polymorphism into the ATM System
24.4 ATM Case Study Implementation
24.4.1 Class ATM
24.4.2 Class Screen
24.4.3 Class Keypad
24.4.4 Class CashDispenser
24.4.5 Class DepositSlot
24.4.6 Class Account
24.4.7 Class BankDatabase
24.4.8 Class Transaction
24.4.9 Class BalanceInquiry
24.4.10 Class Withdrawal
24.4.11 Class Deposit
24.4.12 Class ATMCaseStudy
24.5 Wrap-Up
A Operator Precedence Chart
B ASCII Character Set
C Keywords and Reserved Words
D Primitive Types
E Using the Debugger
E.1 Introduction
E.2 Breakpoints and the run , stop , cont and print Commands
E.3 The print and set Commands
E.4 Controlling Execution Using the step , step up and next Commands
E.5 The watch Command
E.6 The clear Command
E.7 Wrap-Up
F Using the Java API Documentation
F.1 Introduction
F.2 Navigating the Java API
G Creating Documentation with javadoc
G.1 Introduction
G.2 Documentation Comments
G.3 Documenting Java Source Code
G.4 javadoc
G.5 Files Produced by javadoc
H Unicode?
H.1 Introduction
H.2 Unicode Transformation Formats
H.3 Characters and Glyphs
H.4 Advantages/Disadvantages of Unicode
H.5 Using Unicode
H.6 Character Ranges
I Formatted Output
I.1 Introduction
I.2 Streams
I.3 Formatting Output with printf
I.4 Printing Integers
I.5 Printing Floating-Point Numbers
I.6 Printing Strings and Characters
I.7 Printing Dates and Times
I.8 Other Conversion Characters
I.9 Printing with Field Widths and Precisions
I.10 Using Flags in the printf Format String
I.11 Printing with Argument Indices
I.12 Printing Literals and Escape Sequences
I.13 Formatting Output with Class Formatter
I.14 Wrap-Up
J Number Systems
J.1 Introduction
J.2 Abbreviating Binary Numbers as Octal and Hexadecimal Numbers
J.3 Converting Octal and Hexadecimal Numbers to Binary Numbers
J.4 Converting from Binary, Octal or Hexadecimal to Decimal
J.5 Converting from Decimal to Binary, Octal or Hexadecimal
J.6 Negative Binary Numbers: Two’s Complement Notation
K Bit Manipulation
K.1 Introduction
K.2 Bit Manipulation and the Bitwise Operators
K.3 BitSet Class
L Labeled break and continue Statements
L.1 Introduction
L.2 Labeled break Statement
L.3 Labeled continue Statement
M UML 2: Additional Diagram Types
M.1 Introduction
M.2 Additional Diagram Types
N Design Patterns
N.1 Introduction
N.2 Creational, Structural and Behavioral Design Patterns
N.2.1 Creational Design Patterns
N.2.2 Structural Design Patterns
N.2.3 Behavioral Design Patterns
N.2.4 Conclusion
N.3 Design Patterns in Packages java.awt and javax.swing
N.3.1 Creational Design Patterns
N.3.2 Structural Design Patterns
N.3.3 Behavioral Design Patterns
N.3.4 Conclusion
N.4 Concurrency Design Patterns
N.5 Design Patterns Used in Packages java.io and java.net
N.5.1 Creational Design Patterns
N.5.2 Structural Design Patterns
N.5.3 Architectural Patterns
N.5.4 Conclusion
N.6 Design Patterns Used in Package java.util
N.6.1 Creational Design Patterns
N.6.2 Behavioral Design Patterns
N.7 Wrap-Up
Index

读者评论

同系列书

  • Clean Architecture:软件架构与设计匠艺(英文版)

    Robert C. Martin (作者) Robert C. Martin(罗伯特·C·马丁) (译者)

    马丁的简介代码不仅仅是提供选项。在半个世纪的软件环境中,每一种可以想象的类型,马丁告诉你做出什么选择,以及为什么它们对你的成功至关重要。正如你所渴望的,这本书中...

     
  • Effective Java(第2版)英文版

    (美)Joshua Bloch(约书亚·布洛赫) (作者) 无 (译者)

    本书通过78个有效案例,旨在帮助读者深入理解Java,以写出更加清楚、健壮、可重复使用的代码。书中每个章节均包含小论文,针对Java平台和杰出的代码样例,提供了...

    ¥65.00
  • C11编程导论英文版

    (美)Paul Deitel(保罗·戴特尔),(美) Harvey Deitel(哈维·戴特尔) (作者) (译者)

    本书沿用了Deitel特色的“程序实况解说”,深入探讨了C语言和C标准库。通过完整的语法着色、代码高亮、代码演练和程序输出,全面地介绍了测试程序的概念。本书汇集...

    ¥89.00
  • Effective Javascript:编写高质量JavaScript代码的68个有效方法 英文版

    (美)David Herman(大卫·赫尔曼) (作者) 无 (译者)

    本书由资深 JavaScript 技术专家 David Herman 所著。书中基于 JavaScript 标准的新版本前所未有地阐明了 JavaScript ...

    ¥65.00
  • Effective Python:编写高质量Python代码的59个有效方法 英文版

    (美)Brett Slatkin(布雷特·斯拉特金) (作者) 无 (译者)

    本书不是要讲述 Python 的基础编程,而是要帮你掌握 Python 独特的优势和魅力。书中总结了 59个 Python 编程的优秀实践、贴士和捷径,并用真实...

    ¥65.00

相关图书

Python一行流:像专家一样写代码

Christian Mayer (作者) 苏丹 (译者)

本书专注于从初学迈向进阶的Python编码技术:如何像专家一样写出优雅、准确、简洁高效的Python 单行代码;阅读任意一行Python 代码时,如何系统性地对...

¥89.00

剑指Offer(专项强化版):数据结构与算法名企面试题精讲

何海涛 (作者)

本书全面、系统地总结了在准备程序员面试过程中必备的数据结构与算法。本书首先详细讨论整数、数组、链表、字符串、哈希表、栈、队列、二叉树、堆和前缀树等常用的数据结构...

¥89.00

C++服务器开发精髓

张远龙 (作者)

本书从操作系统原理角度讲解进行C++服务器开发所需掌握的技术栈。全书总计9章,第1~2章讲解C++ 11/14/17新标准中的常用特性、新增类库,以及C++开发...

 

PHP编程(第4版)

Rasmus Lerdorf(拉斯马斯·勒多夫), Kevin Tatroe(凯文·塔特罗), Peter MacIntyre(彼得·麦金太尔) (作者) 卢涛 (译者)

PHP是一种被广泛使用的Web编程语言,它简单易用,而且与时俱进,不断进化,提升性能。本书基于PHP 7.4,深入介绍 PHP编程技术,涵盖了 PHP 所有基本...

¥109.00

深入理解Spring Cloud与实战

方剑 (作者)

本书共分10章,主要介绍Spring Cloud各个核心组件的设计原理,以及目前流行的Spring Cloud Alibaba和 Netflix组件,并且剖析S...

¥106.00

基于Kotlin的Spring Boot微服务实战

袁康 (作者)

本书介绍了Kotlin在Spring Boot微服务开发中的实践,并使用Kotlin作为开发语言,介绍了函数式编程思想、Kotlin的语法、Kotlin在常用中...

¥69.30