基本信息
- 原书名:Introduction to Java Programming, Comprehensive Version, Tenth Edition

内容简介
作译者
文艺复兴以来,源远流长的科学精神和逐步形成的学术规范,使西方国家在自然科学的各个领域取得了垄断性的优势;也正是这样的优势,使美国在信息技术发展的六十多年间名家辈出、独领风骚。在商业化的进程中,美国的产业界与教育界越来越紧密地结合,计算机学科中的许多泰山北斗同时身处科研和教学的最前线,由此而产生的经典科学著作,不仅擘划了研究的范畴,还揭示了学术的源变,既遵循学术规范,又自有学者个性,其价值并不会因年月的流逝而减退。
近年,在全球信息化大潮的推动下,我国的计算机产业发展迅猛,对专业人才的需求日益迫切。这对计算机教育界和出版界都既是机遇,也是挑战;而专业教材的建设在教育战略上显得举足轻重。在我国信息技术发展时间较短的现状下,美国等发达国家在其计算机科学发展的几十年间积淀和发展的经典教材仍有许多值得借鉴之处。因此,引进一批国外优秀计算机教材将对我国计算机教育事业的发展起到积极的推动作用,也是与世界接轨、建设真正的世界一流大学的必由之路。
机械工业出版社华章公司较早意识到“出版要为教育服务”。自1998年开始,我们就将工作重点放在了遴选、移译国外优秀教材上。经过多年的不懈努力,我们与Pearson,McGraw-Hill,Elsevier,MIT,John Wiley & Sons,Cengage等世界著名出版公司建立了良好的合作关系,从他们现有的数百种教材中甄选出Andrew S. Tanenbaum,Bjarne Stroustrup,Brian W. Kernighan,Dennis Ritchie,Jim Gray,Afred V. Aho,John E. Hopcroft,Jeffrey D. Ullman,Abraham Silberschatz,William Stallings,Donald E. Knuth,John L. Hennessy,Larry L. Peterson等大师名家的一批经典作品,以“计算机科学丛书”为总称出版,供读者学习、研究及珍藏。大理石纹理的封面,也正体现了这套丛书的品位和格调。
“计算机科学丛书”的出版工作得到了国内外学者的鼎力相助,国内的专家不仅提供了中肯的选题指导,还不辞劳苦地担任了翻译和审校的工作;而原书的作者也相当关注其作品在中国的传播,有的还专门为其书的中译本作序。迄今,“计算机科学丛书”已经出版了近两百个品种,这些书籍在读者中树立了良好的口碑,并被许多高校采用为正式教材和参考书籍。其影印版“经典原版书库”作为姊妹篇也被越来越多实施双语教学的学校所采用。
权威的作者、经典的教材、一流的译者、严格的审校、精细的编辑,这些因素使我们的图书有了质量的保证。随着计算机科学与技术专业学科建设的不断完善和教材改革的逐渐深化,教育界对国外计算机教材的需求和应用都将步入一个新的阶段,我们的目标是尽善尽美,而反馈的意见正是我们达到这一终极目标的重要帮助。华章公司欢迎老师和读者对我们的工作提出建议或给予指正,我们的联系方法如下:
华章网站:www.hzbook.com
电子邮件:hzjsj@hzbook.com
联系电话:(010)88379604
联系地址:北京市西城区百万庄南街1号
邮政编码:100037
目录
中文版序
译者序
前言
第19章 泛型 1
19.1 引言 1
19.2 动机和优点 1
19.3 定义泛型类和接口 4
19.4 泛型方法 5
19.5 示例学习:对一个对象数组进行排序 7
19.6 原始类型和向后兼容 8
19.7 通配泛型 10
19.8 消除泛型和对泛型的限制 12
19.9 示例学习:泛型矩阵类 15
关键术语 19
本章小结 19
测试题 20
编程练习题 20
第20章 线性表、栈、队列和优先队列 21
20.1 引言 21
前言
用JavaFX取代了Swing。JavaFX是一个用于开发Java GUI程序的新框架,它极大地简化了GUI程序设计,比Swing更易于学习。
在GUI程序设计之前介绍异常处理、抽象类和接口,若教师选择不教授GUI的内容,可以直接跳过第14~16章。
在第4章便开始介绍对象和字符题串,从而使得学生可以较早地使用对象和字符串来开发有趣的程序。
包含更多新的有趣示例和练习题 ,用于激发学生兴趣。在配套网站(www.cs. armstrong.edu/liang/intro10e/或www.pearsonhighered.com/liang)上还为教师提供了100多道编程练习题。
本书采用基础优先的方法,在设计自定义类之前,首先介绍基本的程序设计概念和技术。选择语句、循环、方法和数组这样的基本概念和技术是程序设计的基础,它们为学生进一步学习面向对象程序设计和高级Java程序设计做好准备。
本书以问题驱动的方式来教授程序设计,将重点放在问题的解决而不是语法上。我们通过使用在各种应用情景中引发思考的问题,使得程序设计的介绍也变得更加有趣。前面章节的主线放在问题的解决上,引入合适的语法和库以支持编写解决问题的程序。为了支持以问题驱动的方式来教授程序设计,本书提供了大量不同难度的问题来激发学生的积极性。为了吸引各个专业的学生来学习,这些问题涉及很多应用领域,包括数学、科学、商业、金融、游戏、动画以及多媒体等。
本书将程序设计、数据结构和算法无缝集成在一起,采用一种实用性的方式来教授数据结构。首先介绍如何使用各种数据结构来开发高效的算法,然后演示如何实现这些数据结构。通过实现,学生获得关于数据结构效率,以及如何和何时使用某种数据结构的深入理解。最后,我们设计和实现了针对树和图的自定义数据结构。
本书广泛应用于全球各大学的程序设计入门、数据结构和算法课程中。完全版包括程序设计基础、面向对象程序设计、GUI程序设计、数据结构、算法、并行、网络、数据库和Web程序设计。这个版本旨在把学生培养成精通Java的程序员。基础篇可用于程序设计的第一门课程(通常称为CS1)。基础篇包含完全版的前18章内容,前13章适合准备AP计算机科学考试(AP Computer Science Exam)的人员使用。
教授编程的最好途径是通过示例,而学习编程的唯一途径是通过动手练习。本书通过示例对基本概念进行了解释,提供了大量不同难度的练习题供学生进行实践。在我们的程序设计课程中,每次课后都布置了编程练习。
我们的目标是编写一本可以通过各种应用场景中的有趣示例来教授问题求解和程序设计的教材。如果您有任何关于如何改进本书的评论或建议,请通过以下方式与我联系。
Y. Daniel Liang
y.daniel.liang@gmail.com
www.cs.armstrong.edu/liang
www.pearsonhighered.com/liang
本版新增内容
本版对各个细节都进行了全面修订,以增强其清晰性、表述、内容、例子和练习题。本版主要的改进如下:
更新到Java 8版本。
由于Swing被JavaFX所替代,因此所有的GUI示例和练习题都使用JavaFX改写。
使用lambda表达式来简化JavaFX和线程中的编程。
序言
Introduction to Java Programming, Comprehensive Version, Tenth Edition
Welcome to the Chinese translation of Introduction to Java Programming Tenth Edition. The first edition of the English version was published in 1998. Since then ten editions of the book have been published in the last seventeen years. Each new edition substantially improved the book in contents, presentation, organization, examples, and exercises. This book is now the #1 selling computer science textbook in the US. Hundreds and thousands of students around the world have learned programming and problem solving using this book.
I thank Dr. Kaiyu Dai of Fudan University for translating this latest edition. It is a great honor to reconnect with Fudan through this book. I personally benefited from teachings of many great professors at Fudan. Professor Meng Bin made Calculus easy with many insightful examples. Professor Liu Guangqi introduced multidimensional mathematic modeling in the Linear Algebra class. Professor Zhang Aizhu laid a solid mathematical foundation for computer science in the discrete mathematics class. Professor Xia Kuanli paid a great attention to small details in the PASCAL course. Professor Shi Bole showed many interesting sort algorithms in the data structures course. Professor Zhu Hong required an English text for the algorithm design and analysis course. Professor Lou Rongsheng taught the database course and later supervised my master’s thesis.
My study at Fudan and teaching in the US prepared me to write the textbook. The Chinese teaching emphasizes on the fundamental concepts and basic skills, which is exactly I used to write this book. The book is fundamentals first by introducing basic programming concepts and techniques before designing custom classes. The fundamental-first approach is now widely adopted by the universities in the US. With the excellent translation from Dr. Dai, I hope more students will benefit from this book and excel in programming and problem solving.
Y. Daniel Liang
欢迎阅读本书第10版的中文版。本书英文版的第1版于1998年出版。自那之后的17年中,本书共出版了10个版本。每个新的版本都在内容、表述、组织、示例以及练习题等方面进行了大量的改进。本书目前在美国计算机科学类教材中销量排名第一。全世界无数的学生通过本书学习程序设计以及问题求解。
感谢复旦大学的戴开宇博士翻译了这一最新版本。非常荣幸通过这本书和复旦大学重建联系,我本人曾经受益于复旦大学的许多杰出教授:孟斌教授采用许多富有洞察力的示例将微积分变得清晰易懂;刘光奇教授在线性代数课堂上介绍了多维度数学建模;张霭珠教授的离散数学课程为计算机科学的学习打下了坚实的数学基础;夏宽理教授在Pascal课程中对许多小的细节给予了极大的关注;施伯乐教授在数据结构课程中演示了许多有趣的排序算法;朱洪教授在算法设计和分析课程中使用了英文教材;楼荣生教授讲授了数据库课程,并且指导了我的硕士论文。
我在复旦大学的学习经历以及美国的授课经验为撰写本书奠定了基础。中国的教学重视基本概念和基础技能,这也是我写这本书所采用的方法。本书采用基础为先的方法,在介绍设计自定义类之前首先介绍了基本的程序设计概念和方法。目前,基础为先的方法也被美国的大学广泛采用。我希望通过戴博士的优秀翻译,让更多的学生从中受益,并在程序设计和问题求解方面出类拔萃。
梁勇
y.daniel.liang@gmail.com
www.cs.armstrong.edu/liang
译者序
Java是一门伟大的程序设计语言,同时,它还是基于Java语言从嵌入式开发到企业级开发的平台。在风起云涌的计算机技术发展历程中,Java的身影随处可见,而且生命力极其强大。1995年,Java Applet使得Web网页可以表现精彩和互动的多媒体内容,促进了Web的蓬勃发展。之后随着Web的发展,应用Web成为大型应用开发的主流方式,Java凭借其“一次编译,到处运行”的特性很好地支持了互联网应用所要求的跨平台能力,成为服务器端开发的主流语言。Java EE至今依然是最重要的企业开发服务器端平台。2004年再次产生了对Web客户端体验的强烈需求,促使富因特网应用技术广泛流行,从Java Web Start到现在的JavaFX,都是重要的富因特网应用技术。现在我们进入了移动互联网时代,而Java依然是当之无愧的主角。从第一阶段移动互联网中的J2ME,到目前移动操作系统中全球占据份额最大的Android系统上的App开发,都采用的是Java语言和平台。云计算、大数据、物联网、可穿戴设备等技术的应用,都需要可以跨平台、跨设备的分布式计算环境,我们依然会看到Java语言在其中的关键作用。除此之外,Java还是一门非常优秀的教学语言。它是一门经典的面向对象编程语言,拥有优雅和尽量简明的语法以及丰富的实用类库,让编程人员可以尽可能地将精力集中在业务领域的问题求解上。许多开源项目和科研中的原型系统都是采用Java实现的。课堂教学采用的语言同时在工业界和学术领域具有如此广泛的应用,对于学生今后的科研和工作都有直接帮助。我曾经对美国计算机专业排名靠前的几十所大学的相关课程进行调研,这些著名大学的编程课程中绝大部分选用了Java语言进行教学。
在多年前机械工业出版社举办的一次教学研讨会上,我有幸认识了原书的作者梁勇(Y. Daniel Liang)教授并进行了交流。那次会议之后我开始在主讲的程序设计课程中采用本书英文版作为教材,在同行和学生中得到了良好反响。作为复旦校友,梁教授对中国学生的情况非常了解,书中没有过于晦涩的词汇和表达,所以本英文教材非常适合中国学生的英文基础。更重要的是,本书知识点全面,体系结构清晰,重点突出,文字准确,内容组织循序渐进,并有大量精选的示例和配套素材,比如精心设计的大量练习题,甚至在配套网站中有支持教学的大量动画演示。本书采用基础优先的方式,从编程基础开始,逐步引入面向对象思想,最后介绍应用框架,这样很适合程序设计入门的学生。另外,强调面向问题求解的教学方法是本书特色,这也是我在课堂上一直遵循的教学方法。通过生动实用的例子来引导学生学习程序设计课程,避免了枯燥的语法学习,让学生学以致用,并且可以举一反三。程序设计课堂最重要的是要培养学生的计算思维,这对学生综合素质的培养以及其他知识的学习都是很有裨益的。掌握了程序设计的思维,可以很方便地学习和使用其他编程语言。该版本的另一特色是对最新Java语言特色的跟进,即基于Java最新版本8进行介绍。这是Java语言变动非常大的一个版本,比如对JavaFX的全面引入以及并行计算的支持等,都反映了最新的计算机技术和应用特点。相应地,教材也进行了大幅更新。我很荣幸成为本书第10版的译者,让中国的读者可以通过这一最新版本的中文版方便地学习程序设计相关知识。
在本书的翻译过程中,我得到了原书作者梁勇教授的大力支持。非常感谢他不仅对我邮件中的一些问题进行快速回复和详细解答,还拨冗写了中文版序,其一丝不苟的学术精神让人感动。感谢机械工业出版社的朱劼编辑,她在本书的整个翻译过程中提供了许多帮助。感谢所有为本书付出心血的出版社工作人员以及本书前一版的译者,本书的出版也得益于他们的工作。最后要感谢我的家人在翻译过程中给予的支持和鼓励。由于经验不足和水平有限,书中难免会存在问题,敬请大家指正。你们善意的指正,对我和阅读本书的许多读者是有益的。
戴开宇
2016年7月