译者序IntroductiontoJavaProgramming,8E很荣幸成为这本书第8版的译者。在辛苦工作了数月之后,整本书终于翻译完毕。就在翻译这个版本的过程中,我还在使用本书的上一版本进行Java程序设计课程的教学,所以在译完新版之后,想谈谈自已的一些感想。其实,市场上有很多关于Java的书籍,为什么我会选择这本书作为教学所用的教材呢?看了一些关于Java的教材,有些书假定读者已经有了程序设计的基础,如果初学者想从Java开始学习程序设计会很吃力:有些书虽然从程序设计基础讲起,但它的者眼点放在代码上,就事论事,并未将程序设计的思惠想引入其中,这样,学生学习之后,只能解决课本上所出现的问题,不能从书中所学内容延伸到所遇到的新问题上。本书采用基础优先的方法,并且以间题驱动的方式教授程序设计的概念和技术。这样就在很大程度上克服了以上缺点,不仅涵盖的内容全面,而且自始至终都渗透着程序设计的思想,引导读者从宏观上把握程序设计。另外,本版对前一版又进行了精简写修正,略去了一些过时的知识,调整了内容的先后次序,并补充了许多新的内容,使新版对最新技术的介绍更为及时。整本书脉络清晰、可读性很强,便于查阅,既适合作为初学者的入门读物,也适合教师和专业人员参考。这里也想提醒读者,如果可以的话,最好能按照书上所指示的,到本书配套网站上下载可用的相关资料。我自已这两年的教学过程中借鉴的就是作者在网站上的课件,再根据自已课程的需求做了一些调整,教学效果很好,所以推荐同行也去申请相关资料。对学生来讲,网站上的测试题是对课本内容的一个检验,希望你们能充分利用这些好的资源。祝福大家都能从这本书中受益!在整个翻译工作结束之时,表心感谢机械工业出版社华章公司的编辑所做的大量细致工作,特别是负责和我联系的王春华编辑。翻译过程中,教学工作的繁忙和不断的生病耽误了进度,给王编辑的工作带来了困扰,她心里再急也总是体谅我,对我给予了充分的信任和支持,很庆幸在翻译这本书的时候能遇到这么耐心细致的编辑。也想借此机会感谢家人、朋友和同事在翻译过程中对我的支持,没有你们的支持,我可能没有时间和精力来完成这本书的翻译工作。由于时间仓促,译者水平有限,译文中难免存在欠要和纰漏之处,悬请广大读者不各赐教和指正。译者22011年2月伊PDG
前言Introduction to Java Programming,8E本书采用基础优先的方法,并且以问题驱动的方式教授程序设计的概念和技术。基础优先的方法是指在学习对象和类之前,首先介绍基本程序设计的概念和技术。经验证明,学习基本逻辑以及循环和逐步求精这样的基本程序设计技术,对于初学编程的人员是非常重要的。像循环,方法和数组这样的基本概念和技术都是程序设计的基础,它们为学生进一步学习面向对象程序设计、GUI、数据库和Web程序设计做好准备。问题驱动意味着将重点放在问题的解决而不是语法上。我们通过使用一些有趣的间题使得程序设计的介绍也变得更加有趣。前些章的主线放在问题的解决上,介绍正确的语法和库以支持编写解决问题的程序。为了支持以问题驱动的方式来教授程序设计,本书提供了大量不同难度的问题来激发学生的兴趣。为了吸引各个专业的学生来学习,这些问题涉及了很多应用领域,例如,数学、科学、商业、金融、游戏、动画以及多媒体。两个版本本书有两个版本:完全版(包括第137章)和基础版(包括第1~20章)。完全版包括程序设计基础、面向对象程序设计、GUI程序设计、算法和数据结构、并发、网络、国际化、高级GUI、数据库和Web程序设计。设计这个版本是为了培养专家级Java程序员。基础版可用于程序设计的第一门课程(通常称为CS1)。本版新增内容与第7版相比,本版主要的改动如下:·对各个细节都进行了全面修订,以增强其清晰性、表述、内容、例子和练习题。·例子和练习题都是为了激发学生对程序设计的兴趣,其中五分之一的问题都是新的。·在前一版中,控制台输人是在第2章的末尾介绍的。新版本在第2章之初就介绍控制台输入,这样,学生就可以更早地开始编写可交互的程序。·许多程序都增加了手动跟踪框,这样有助于初学者读程序和跟踪程序。·一维数组和多维数组分别在两章中介绍,这样可以给教师提供一定的灵活性,便于教师确定是否随后介绍多维数组。·将九宫格间题的实例学习移到了本书配套网站(www.cs.armstrong.edu/liang/intro8e或www.pearsonhighered.com/liang)上。本书中给出的是有利于教学的简单版本的九宫格问题。PD·为JavaGUI程序设计所做的API设计是一个如何应用面向对象准则的非常好的例子,使用具体的,0本书中文版将完全版分成《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》。基础篇对应原书的第1~20章,进阶篇对应原书的第21~37章
VI可视化的例子,学生可以学得更好,因此,基本GUI现在放在抽象类和接口的介绍之前,当然,教师还是可以选择在GUI之前介绍抽象类和接口。·异常处理是在抽象类和接口之前介绍的,因此,学生可以更早地编写健壮的程序。当然,教师也可以选择在后面教授异常处理。·前一版的第12章“面向对象设计和模式”被替换成将设计指南和模式分成几章,这样,就可以在合适的上下文中介绍这些主题。·关于排序的一章刚好放在关于算法效率的一章之后,这样,学生可以立即将算法效率应用在排序算法上。·全新的第44章介绍Java2D·关于数据结构的内容扩展为关于AVL树、splay树、2-4树、B树、红黑树以及散列的几章,所以本书也可以作为数据结构课程的完整教材,学习策略程序设计课程与其他课程有很大的区别。在程序设计课程中,学生要从例子中学习、从实践中学习、从错误中学习,需要花费大量的时间来编写程序、调试程序并修改错误。对于刚接触程序设计的新手来说,学习Java与学习其他高级程序设计语言一样。学习程序设计的基本目的就是培养描述实际问题的程序化解决方案的关键技能,并通过条件语句、循环、方法和数组将方案转变成程序一且掌握了使用循环、方法和数组编写程序的基本技能,就可以开始学习如何使用面向对象的方法开发大型程序和GUI程序。一且知道了如何编程并理解了面向对象程序设计的概念,那么,学习Java就变成了学习JavaAPIJavaAPI为程序员搭建了使用Java开发应用程序的框架。必须使用API中的类和接口,并遵循它们的惯例和规则来创建应用程序。学习JavaAPI最好的办法是模仿例子并进行练习。教学特点本书采用下列要素组织素材·学习目标:列出学生学习本章应该掌握的内容,有助于他们学完各章后判断自已是否达到了目标。·引言:由一个典型的问题开始、讨论本章所能学到的内容。·问题:以容易理解的方式仔细地挑选和描述问题,教授间题解决方案和程序设计概念。本书使用多个小的、简单的、令人兴奋的例子来演示重要的概念。·本章小结:回顾学生应该理解和记住的重要主题,有助于巩固本章所学的关键概念。·复习题:按节组织,帮助学生评估学习状况。·编程练习题:按节组织,给学生提供独立应用所学技能的机会。练习题的难度分为容易(没有星号)、适度(*)、难(**)和非常难(***)四个级别。学习程序设计的窍门就是实践、实践、再实践。所以,本书提供了大量的编程练习题。·LiveLab:课程评估和管理系统。学生可以在线提交程序,系统会自动地给程序/多选题打分,并给出一个快速的反馈。教师可以自已定制程序设计练习题和测验题,并使用这个系统预建练习题和测验题。第38~48章放在本书配套网站上,需要付费申请。—一编辑注e
VII·注意、提示和警告:贯穿全书,对程序开发的重要方面提供有价值的建议和深刻的认识。注意提供主题的附加信息,巩固重要概念。提示讲解好的程序设计风格和经验。警告帮助学生避开程序设计错误的误区,设计指南提供设计程序的指南,灵活的章节顺序本书提供灵活的章节顺序,使学生可以或早或晚地解GU、异带处理、递归、支型和aVa集合案构。下页图显示了各章之间的相关性。本书的组织所有的章节分为五部分,构成Java程序设计、数据结构和算法、数据库和Web程序设计的全面介绍前面的章节介绍了程序设计的基本概念,井且通过简单的例子和练习题指导学生:后续的章节逐步详细地介绍Java程序设计,最后是开发复杂的Java应用程序。第一部分程序设计基础(第1~7章)第一部分是基石,让你开始Java之旅。你将开始了解Java(第1章),还将学习像基本数据类型、变量、常量、赋值、表达式以及运算符这样的基本程序设计技术(第2章),控制语句(第3~4章),方法(第5章),数组(第67章)。在第6章之后,可以既到第20章去学习如何编写递归的方法来解决本质递归的问题。第二部分面向对象程序设计(第8~11、13~14和19章)这一部分介绍面向对象程序设Java是一种面向对象程序设计语言,它使用抽象、封装、继承和多态来提供开发软件的灵活性、模块化和复用性。你将学习如何使用对象和类进行程序设计(第810章)、类的继承(第11章)、多态(第11章)、异常处理(第13章)、抽象类(第14章)以及接口(第14章)。处理字符串将在第9章和文本I/O一起介绍。二进制I/O将在第19章介绍。第三部分GUI程序设计(第12、15~18,32~36和44章)这一部分在第12、15~18章中介绍基本的JavaGUI程序设计、在第32~36、44章中介绍高级的JavaGUI程序设计。主要的主题包括GUI基础(第12章)、绘制图形(第15章)、事件驱动程序设计(第16章)、创建图形用户界面(第17章)以及编写applet(第18章)。你将学习JavaGUI程序设计的基础架构,并且使用来自基本GUI章节的GUI组件来开发应用程序和applet。高级GUI章节深人地介绍JavaGUI程序设计。你将在第32章学习JavaBeans以及如何开发自定制事件和源组件,在第33章回顺和讨论新的容器,布局管理器以及边框,在第34章学习如何创建带菜单、弹出式菜单、工具栏、对话框和内部框架的GUI,在第35和36章使用MVC方法开发组件并讨论高级Swing组件JSpinner,JList,JComboBox,JTable和JTree,第44章介绍Java2DP第四部分算法和数据结构(第20~28、45~48章)这一部分介绍经典数据结构课程中的主要内容。第20章介绍递归来编写解决本质遵归问题的方法第21章介绍泛型来提高软件的复用性。第22章介绍Java集合框架,它为数据结构定义了一套有用的API第23章介绍算法效率的度量以便给应用程序选择合适的算法。第24章介绍经典的排序算法,第25一26章和第45~47章介绍如何实现列表、队列、优先队列、二分查找树、AVL树、splay树、2-4树、B树以及红黑树的经典数据结构,第27和28章介绍图像应用程序。第48章介绍散列
VII祥发享售dr带真O货真0货%享IE售享享享8喜货原8袋YIs星彩享0元集福享#菲享然掌邦持0真年享集享货真集41一原打#4raisueQIZBABL维图车享I集BAET器华东業克81货真991货OS406家0/绅形2#日袋享享61货享01货新衣茶联联务果招ARPDG真熊su享然9货熊