新書推薦:
《
亚洲戏剧史·南亚卷
》
售價:NT$
653.0
《
中国历代竹器图谱与数字活化
》
售價:NT$
2540.0
《
EDA技术与设计(第2版)
》
售價:NT$
387.0
《
揉碎浪漫(全两册)
》
售價:NT$
320.0
《
古籍善本
》
售價:NT$
2448.0
《
人民币国际化报告2024:可持续全球供应链体系与国际货币金融变革
》
售價:NT$
398.0
《
道德经新注 81幅作者亲绘哲理中国画,图文解读道德经
》
售價:NT$
653.0
《
清俗纪闻
》
售價:NT$
449.0
編輯推薦:
# 注重完整的程序设计实践,每一章都附有大量具有可实践性的程序实例、自测题、练习题、编程项目,以及富有趣味性的图形用户界面设计实例。
# 采用JavaFX来设计图形用户界面,使得设计GUI变得更容易,并且功能更强大。
# 使用Java 8的方法引用和lambda表达式来定义事件处理器。
# 讲解了JavaFX的布局面板和JavaFX Scene Builder软件。
內容簡介:
本书对面向对象的思想和机制进行了准确而透彻的剖析,为读者深入学习Java语言程序设计提供了全面、详细的指导。全书覆盖了面向对象设计的广泛内容,介绍了Java语言的基本数据类型、流程控制、类和对象等。在深入分析面向对象设计方法的基础上,介绍了封装机制、继承机制和多态性的实现与应用、异常的捕捉和处理、集合类的定义方法和泛型类的概念。
關於作者:
John Lewis教授是美国知名的编程语言畅销教材的作者,撰写了多部有关Java编程导论、Java软件解决方案、Java数据结构以及计算机应用的相关教材。Lewis教授从美国弗吉尼亚大学获得了博士学位并一直在该校任教。
张君施,北京工商大学数理系副教授,党支部书记。研究方向为概率论与数理统计、计算机语言,翻译过多部经典编程教材。
目錄 :
目录
第1章计算机系统概述1
1.1计算机处理过程1
1.1.1软件分类2
1.1.2数字计算机4
1.1.3二进制数5
1.2硬件组件7
1.2.1计算机结构7
1.2.2输入输出设备8
1.2.3主存储器和辅助存储器9
1.2.4中央处理器11
1.3网络13
1.3.1网络连接13
1.3.2局域网和广域网14
1.3.3因特网15
1.3.4万维网15
1.3.5统一资源定位器16
1.4Java编程语言17
1.4.1Java程序18
1.4.2注释19
1.4.3标识符和保留字20
1.4.4空白符22
1.5程序开发24
1.5.1编程语言的级别24
1.5.2编辑器、编译器和解释器25
1.5.3开发环境26
1.5.4语法和语义27
1.5.5错误27
1.6面向对象编程28
1.6.1问题求解29
1.6.2面向对象的软件原理30
重要概念小结32
练习题33
编程项目34
第2章数据与表达式36
2.1字符串36
2.1.1print和println方法36
2.1.2字符串的连接37
2.1.3转义序列39
2.2变量与赋值41
2.2.1变量41
2.2.2赋值语句42
2.2.3常量43
2.3基本数据类型44
2.3.1整型与浮点型44
2.3.2字符型46
2.3.3布尔型47
2.4表达式47
2.4.1算术运算符47
2.4.2运算符优先级48
2.4.3自增和自减运算符50
2.4.4赋值运算符51
2.5数据类型转换52
2.5.1数据类型转换技术53
2.6交互式程序55
2.6.1Scanner类55
重要概念小结58
练习题58
编程项目60
第3章类与对象62
3.1创建对象62
3.1.1别名64
3.2String类65
3.3包67
3.3.1import声明69
3.4Random类70
3.5Math类72
3.6格式化输出74
3.6.1NumberFormat类74
3.6.2DecimalFormat类76
3.6.3printf方法77
3.7枚举类型78
3.8包装器类80
3.8.1自动装箱81
3.9JavaFX简介81
3.10 基本形状84
3.11 颜色呈现88
重要概念小结89
练习题90
编程项目91
第4章编写类93
4.1类与对象的核心概念93
4.2类的分析94
4.2.1实例数据98
4.2.2UML类图98
4.3封装99
4.3.1可见性修饰符100
4.3.2访问器和修改器100
4.4方法的分析101
4.4.1return语句102
4.4.2参数103
4.4.3局部数据103
4.4.4银行账户示例104
4.5构造方法回顾107
4.6弧107
4.7图形110
4.7.1视口111
4.8图形用户界面112
4.8.1指定事件处理器的其他
方法114
4.9单行文本框114
重要概念小结117
练习题117
编程项目118
第5章条件判断与循环121
5.1布尔表达式121
5.1.1相等性运算符与关系运算符122
5.1.2逻辑运算符122
5.2if语句124
5.2.1if-else语句126
5.2.2使用语句块129
5.2.3嵌套if语句131
5.3数据比较133
5.3.1浮点数比较133
5.3.2字符比较133
5.3.3比较对象134
5.4while语句135
5.4.1无限循环139
5.4.2嵌套循环139
5.4.3break语句与continue语句142
5.5迭代器143
5.5.1读取文本文件143
5.6ArrayList类145
5.7确定事件源148
5.8管理字体150
5.9复选框151
5.10 单选钮154
重要概念小结157
练习题157
编程项目159
第6章其他条件判断与循环163
6.1switch语句163
6.2条件运算符166
6.3do语句167
6.4for语句169
6.4.1for-each循环172
6.4.2各种循环的比较172
6.5对图形使用循环和条件173
6.6图形转换176
6.6.1平移176
6.6.2缩放177
6.6.3旋转177
6.6.4错切178
6.6.5按组进行转换178
重要概念小结181
练习题181
编程项目182
第7章面向对象设计185
7.1软件开发活动185
7.2明确类和对象186
7.2.1类职责的分派187
7.3静态类成员188
7.3.1静态变量188
7.3.2静态方法188
7.4类间关系190
7.4.1依赖关系190
7.4.2同一个类的对象之间的
依赖性191
7.4.3聚合195
7.4.4this引用198
7.5接口199
7.5.1Comparable接口203
7.5.2Iterator接口203
7.6枚举类型204
7.7方法设计205
7.7.1方法分解206
7.7.2方法参数的传递方式209
7.8方法重载213
7.9测试214
7.9.1评审215
7.9.2缺陷测试215
7.10GUI设计217
7.11 鼠标事件217
7.12 按键事件221
重要概念小结223
练习题223
编程项目224
第8章数组227
8.1数组元素227
8.2声明和使用数组228
8.2.1边界检查230
8.2.2数组声明方式233
8.2.3数组初始值表233
8.2.4数组作为参数234
8.3对象数组235
8.4命令行实参242
8.5可变长度参数表243
8.6二维数组245
8.6.1多维数组248
8.7多边形和折线249
8.8Color对象数组250
8.9选项框253
重要概念小结255
练习题256
编程项目257
第9章继承260
9.1创建子类260
9.1.1protected修饰符264
9.1.2super引用264
9.1.3多继承267
9.2重写方法267
9.2.1影子变量269
9.3类层次结构269
9.3.1Object类270
9.3.2抽象类271
9.3.3接口层次272
9.4可见性273
9.5继承关系的设计275
9.5.1继承的限制276
9.6JavaFX中的继承276
9.7颜色和日期选择器278
9.8对话框280
9.8.1文件选择器282
重要概念小结284
练习题285
编程项目285
第10章多态性288
10.1后绑定288
10.2利用继承实现多态性289
10.3利用接口实现多态性297
10.4排序299
10.4.1选择法排序299
10.4.2插入法排序303
10.4.3排序算法的比较304
10.5搜索305
10.5.1线性搜索305
10.5.2二分法搜索308
10.5.3搜索算法的比较309
10.6多态性设计309
10.7属性310
10.7.1变化监听器312
10.8滑动条314
10.9微调器315
重要概念小结317
练习题318
编程项目318
第11章异常处理319
11.1异常319
11.2未捕获的异常320
11.3try-catch语句321
11.3.1finally子句323
11.4异常的传递324
11.5异常类层次结构326
11.5.1检查型与非检查型异常328
11.6IO异常329
11.7工具提示与禁用控件332
11.8滚动面板334
11.9分隔面板和列表视图336
重要概念小结339
练习题339
编程项目340
第12章递归341
12.1递归思想341
12.1.1无穷递归342
12.1.2数学中的递归运算342
12.2递归编程343
12.2.1递归与迭代的比较344
12.2.2直接递归与间接递归345
12.3递归的应用346
12.3.1迷宫旅行346
12.3.2汉诺塔349
12.4平铺图形353
12.5分形355
重要概念小结360
练习题360
编程项目361
第13章集合363
13.1集合与数据结构363
13.1.1分离接口与实现363
13.2数据结构的动态表示364
13.2.1动态结构364
13.2.2动态链表365
13.2.3其他的动态列表368
13.3线性集合369
13.3.1队列369
13.3.2栈370
13.4非线性数据结构372
13.4.1树372
13.4.2图373
13.5Java集合类API374
13.5.1泛型374
重要概念小结375
练习题375
编程项目376
附录A术语表378
附录B数制系统395
附录CUnicode字符集399
附录DJava运算符401
附录EJava修饰符405
附录FJava编码指南407
附录GJavaFX布局面板411
附录HJavaFX Scene Builder418
附录I 正则表达式425
附录J javadoc文档生成器426
附录KJava语法429
附录L自测题答案438
內容試閱 :
译 者 序
诞生于20世纪90年代中期的Java编程语言,开创了一个全新的编程思维模式,并迅速风靡于整个IT业界。从Java开始,涌现出了许多各具特色的面向对象编程工具。Java语言不仅可用于开发大型软件,而且也特别适合于开发Web应用,目前已成为网络时代最重要的程序设计语言之一,并且其开发工具和功能也正随着网络技术的不断发展而同步进行更新。Java语言已经成为事实上适合初学者学习面向对象程序设计的首选语言。
本书是一本学习Java编程的入门性教材,也是读者初步了解面向对象思想及其实现方法的一本理想读物。全书深入、透彻地分析了Java语言的面向对象机制,指导读者如何在学会设计类和对象前先学会使用类和对象,以大量程序实例体现了面向对象的核心概念(如类、对象、重载、接口及多态性等)和封装、继承等机制,并基于解决问题的思路灵活运用各种Java程序设计技术,详细示范了一些典型算法的实现方法。
本书注重完整的程序设计实践,每一章都附有大量具有可实践性的程序实例、自测题、练习题、编程项目,以及富有趣味性的图形用户界面设计实例,以着重培养读者的软件设计能力和解决问题的能力。有些章末尾的软件失误案例虽然短小,但它们是来自于现实世界的惨痛教训,其目的在于培养读者(未来的程序员)质量高于一切的思想,强调良好的软件设计思想和严谨合理的设计规范的重要性。
各章末尾的图形设计之路部分,已经全部重新编写,为图形设计的教学提供了较大的灵活性,它们可作为相对独立的一部分根据需要在教学上进行取舍。
本书最大的更新,在于讲解如何用最新的开发工具JavaFX设计图形用户界面,它全面替换了以前使用的抽象窗口工具集(AWT)和Swing,使设计GUI变得更容易,功能更强大。并且还对项目题进行了调整,从而更加适应教学的要求。此外,对占本书相当篇幅的附录进行了全面更新,以反映Java语言本身的调整并与正文各章相呼应。本书还为学生和主讲教师提供了丰富的配套资源。
全书共分13章及12个附录,包括计算机系统概述、数据与表达式、类与对象、编写类、条件判断与循环(两章)、面向对象设计、数组、继承、多态性、异常处理、递归和集合,附录则主要提供术语表及练习题答案等。全书由洛基山主持翻译工作。前言、第2~4章由首都经济贸易大学刘丽丽翻译;第7~9章由西北农林科技大学闫锋欣翻译;第10~12章由北京工商大学张君施翻译;张莉翻译了第13章及附录A和附录B;附录C~F由徐景辉翻译;陈艳羽翻译了附录G~K;常征翻译了第1章、附录L以及各章的自测题、练习题、编程项目和自测题答案;陕西师范大学孟永宏翻译第5~6章和部分附录;蔡志强翻译软件失误案例和部分自测题;全书最后由洛基山负责修订和统稿。
由于译者水平有限,并且各种专业术语在业界尚无严格统一的译法,如果译稿中有不妥或错误之处,恳请广大读者批评指正。
前 言
欢迎使用本书第九版。多年来,本书能够满足广大师生的需求并为教学服务,这使我们深感欣慰。这一版本做了进一步的内容组织和调整,完善了关键技术问题的重点分解和概念解释。
本版的改进
这一版最大的变化,是彻底重写了书中的图形设计之路部分,以充分利用JavaFX API。Oracle已经不再支持Swing。现在,JavaFX 已经成为开发图形和图形用户界面(GUI)的首选方法,因此本书也将采用它。
书中的更新如下:
? 涵盖JavaFX图形形状。
? 讲解JavaFX控件,包括按钮、文本框、复选框、单选钮、选项框、颜色选择器、日期选择器、滚动条以及微调器等。
? 使用Java 8的方法引用和lambda表达式来定义事件处理器。
? 探究JavaFX的类层次。
? 解释JavaFX中的属性及属性绑定。
? 优化了各章末尾的练习题以及编程项目题。
? 新增加的附录G,讲解了JavaFX的布局面板。
? 新增加的附录H,介绍了JavaFX Scene Builder软件。
关于JavaFX有两个令人激动的部分。首先,它提供了比Swing更清晰的GUI开发方法。用JavaFX开发的程序,会比用Swing开发的更短、更易理解。
其次,与Swing相比,JavaFX更遵循面向对象的核心原则。例如,所有的图形,都是用包含基本数据元素的类体现的,比如包含半径值的Circle类。第3章讲解的有关各种形状的类,都是经过精心设计的基本类,只需学生具备对类和对象的基本理解即可。
通过Java 8方法引用,为定义事件处理器提供了一种容易理解的途径。或者,学生也可以使用(底层的)lambda表达式,定义事件处理器。
关于JavaFX的布局面板,在书中的一些示例中解释;有关它的完整描述,在附录G中给出。我们认为,与Swing布局管理器相比,JavaFX布局面板更好,书中的一章里会专门解释。
书中提供的所有GUI,都是用Java代码手工编码出来的。对于初学者而言,这样做很重要。附录H讲解的是JavaFX Scene Builder软件,它能进行鼠标拖放操作。但是,本书正文中并没有使用它。
除了与JavaFX相关的改变,本书还更新了一些示例和讨论的内容,以满足当今的教学需要。
除了为学生提供本书,我们也很乐意听到读者对本书的评价和疑问。
本书的基石
本书是基于下面的基本思想编写的,相信这有助于使其成为一本优秀的教材。
? 真正的面向对象。一本真正介绍完全面向对象方法的教材,必须使用对象语言,即所有问题都应该用面向对象的术语来讨论。但这并不意味着必须对第一个程序就讨论多个类和方法的编写方式,学生应当在学会编写对象之前先了解如何使用对象。本书采用一种自然的学习进程,使学生逐步达到具有设计实际的面向对象解决方案的能力。
? 良好的程序设计实践。本书的主要目的不是教学生如何编程,而是讲解如何写出好的软件。二者是有差别的。编写软件并不是按照说明完成一套动作,一个好程序也远非仅仅是一些语句的集合。本书汇集了一些可作为良好程序设计技巧基础的实践经验,它们不仅应用于本书所有的实例,而且还在讨论中进一步强化。学生将学会如何解决问题以及如何实现设计方案。全书贯穿了软件工程基本技术的介绍,软件失误案例通过生动的实例,展示不遵守这些程序设计实践原则所带来的后果,进一步复习了软件工程基本技术课程。
? 示例程序。学生将通过程序实例来学习。本书通过大量已完整实现的实例来讲解特定的概念。书中穿插列举了易理解的小例子和实用的大例子,二者相辅相成,并对图形和非图形实例的采用进行了合理的选择。
? 图形与图形用户界面(GUI)。图形能够激发学生极大的学习兴趣,而且图形设计可以充当面向对象应用的绝佳实例。因此,本书每一章都安排了精心设计的几部分,称为图形设计之路。本书完整讲解了JavaFX API,它提供对Java图形和GUI的全面支持,是首选的开发工具。随着图形设计主题讨论的开展,学生将很自然地学会以适当的方式创建GUI。对于不需要涉及图形设计的学生,则可以忽略图形设计之路的内容。
各章概述
第1章(计算机系统概述)一般性地介绍计算机系统,包括计算机基本结构和硬件、网络、程序设计及语言翻译。本章对Java也进行了介绍,并讨论了通用程序开发的基础和面向对象编程。这一章广泛涵盖了学生所要熟悉的开发环境介绍。
第2章(数据与表达式)探讨Java程序中使用的一些基本数据类型和计算表达式的用法,还讨论了数据类型间的转换,以及如何借助标准的Scanner类与用户进行交互式输入。
第3章(类与对象)讲解预定义类的使用及其对象的创建方法,这些类和对象用于处理字符串、产生随机数、执行复杂计算和格式化输出。此外还讨论了枚举数据类型。
第4章(编写类)分析了与类和方法的编写有关的问题,包括实例数据、可见性、引用范围、方法参数和返回类型。此外还讨论了封装和构造方法。与编写类相关的其他问题在第6章讨论。
第5章(条件判断与循环)讨论用于判断的布尔表达式的用法,然后详细地讲解了if语句和while循环语句。一旦建立了循环,就可引入迭代的概念,并进一步讨论用Scanner类不断接收、解析输入数据以及读取文本文件的方法。最后,介绍可用于管理大量对象的ArrayList类。
第6章(其他条件判断与循环)讨论第5章未涉及的其他Java条件语句(switch)和循环语句(do,for),包括for循环语句的增强版本。for-each循环语句也可用于处理迭代和ArrayList对象。
第7章(面向对象设计)进一步深入和扩展了关于类的设计问题的讨论,包括解决问题时需要确定类和对象的识别技术,以及类与对象间的关系。本章还探讨了静态类成员、接口以及枚举型类的设计。这一章对方法设计和方法重载也进行了讨论。
第8章(数组)详细讲解了数组以及数组的处理。将作为最基本的程序设计数据结构的数组与高层次的对象管理方法进行了对比分析。此外,还讨论了命令行参数、可变长度参数表以及多维数组。
第9章(继承)讲解类的派生及其相关概念,例如类层次、重写和可见性。本章还强调了应合理使用继承性,以及在软件设计中使用继承的原则。
第10章(多态性)探讨了绑定的概念以及绑定与多态性的关系。接着,讲解了如何使用继承或接口实现多态性,并利用排序示范了多态性。最后,讨论了有关多态性的程序设计问题。
第11章(异常处理)关注Java标准库中用于定义异常的类层次结构,以及定义用户异常对象的方法。同时还讨论了处理输入输出异常时的方法,并分析了一个编写文本文件的程序示例。
第12章(递归)讲解递归的概念、递归的实现以及合理使用递归的方法,并利用几个不同应用领域的程序实例,演示了递归技术如何使得某些特定问题解决得更完美。
第13章(集合)涉及集合的概念及其基本数据结构,并进一步深入探讨了抽象概念和经典的数据结构。此外,还介绍了泛型。本章可作为CS2(计算机科学课程第二阶段)的入门性内容。
补充资料
学生的在线资