本书是Java语言的经典教材,畅销多年不衰。本书全面整合了Java的特性,采用“先讲基础”的教学方式,循序渐进地介绍了程序设计基础、面向对象程序设计、GUI程序设计等。另外,本书还全面且深入地覆盖了一些高级主题,包括算法和数据结构、并发、网络、国际化、高级GUI、数据库和Web程序设计等。
本书中文版由《Java语言程序设计 基础篇》和《Java语言程序设计 进阶篇》组成。基础篇对应原书的第1~20章,进阶篇对应原书的第21~37章。
本书特点
基础篇介绍基础内容,进阶篇介绍高级内容,教师可以按需选择理想的教材。
全面整合了Java的特性,并对全书的内容进行了修订和更新,以反映Java程序设计方面的最新技术进展。
提供面向对象程序设计的深入探讨,包含GUI程序设计的基础和扩展实例。
提供大量实例,实例中都包括问题求解的详细步骤。
提供大量难易程度不同的习题,在本书配套的网站中还提供了大量的交互式自测题。
第21章 泛型 1
21.1 引言 1
21.2 动机和优点 1
21.3 定义泛型类和接口 3
21.4 泛型方法 4
21.5 原始类型和向后兼容 5
21.6 通配泛型 6
21.7 消除泛型和对泛型的限制 8
21.8 实例学习:泛型矩阵类 10
关键术语 14
本章小结 14
复习题 15
编程练习题 16
第22章 Java集合框架 17
22.1 引言 17
22.2 集合 17
22.3 Collection接口和Abstract-Collection类 18
22.4 规则集 19
22.4.1 散列集HashSet 19
22.4.2 链式散列集LinkedHashSet 23
22.4.3 树形集TreeSet 23
22.5 比较器接口Comparator 25
22.6 线性表 26
22.7 线性表和集合的静态方法 30
22.8 规则集和线性表的性能 32
22.9 向量类Vector和栈类Stack 33
22.10 队列和优先队列 35
22.11 图 37
22.12 单元素和不可变的集合和图 42
关键术语 42
本章小结 42
复习题 43
编程练习题 46
第23章 算法效率 49
23.1 引言 49
23.2 大O符号 49
23.3 举例:确定大O 50
23.4 分析算法的时间复杂度 52
23.4.1 分析二分查找算法 52
23.4.2 分析选择排序算法 52
23.4.3 分析插入排序算法 53
23.4.4 分析汉诺塔问题 53
23.4.5 比较常用的增长函数 53
23.5 实例学习:找出斐波那契数 54
23.6 实例学习:求最大公约数 56
23.7 实例学习:找出素数 59
23.8 实例学习:最近的点对 64
23.9 预览其他算法 66
关键术语 66
本章小结 66
复习题 67
编程练习题 68
第24章 排序 71
24.1 引言 71
24.2 冒泡排序 71
24.3 归并排序 73
24.4 快速排序 76
24.5 堆排序 79
24.5.1 对堆排序 79
24.5.2 添加一个新结点 80
24.5.3 删除根结点 80
24.5.4 Heap类 81
24.5.5 使用Heap类排序 83
24.5.6 堆排序的时间复杂度 84
24.6 桶排序和基数排序 84
24.7 外部排序 85
24.7.1 实现第Ⅰ步 86
24.7.2 实现第Ⅱ步 87
24.7.3 合并两步 89
24.7.4 外部排序分析 91
关键术语 92
本章小结 92
复习题 92
编程练习题 93
第25章 线性表、栈、队列和优先队列 95
25.1 引言 95
25.2 线性表的一般特性 95
25.3 数组线性表 98
25.4 链表 102
25.4.1 结点 103
25.4.2 LinkedList类 104
25.4.3 实现MyLinkedList 105
25.4.4 MyArrayList和MyLinkedList 112
25.5 链表的变体 112
25.6 栈和队列 113
25.7 优先队列 116
25.8 实例学习:计算表达式 117
本章小结 121
复习题 121
编程练习题 122
第26章 二叉查找树 125
26.1 引言 125
26.2 二叉查找树 125
26.2.1 表示二叉查找树 126
26.2.2 查找一个元素 127
26.2.3 在BST中插入一个元素 127
26.2.4 树的遍历 128
26.2.5 BinaryTree类 129
26.3 删除BST中的一个元素 137
26.4 Tree的可视化 141
26.5 迭代器 144
26.6 实例学习:数据压缩 146
关键术语 150
本章小结 150
复习题 150
编程练习题 150
第27章 图及其应用 154
27.1 引言 154
27.2 基本的图术语 155
27.3 图的表示 156
27.3.1 顶点的表示 156
27.3.2 边的表示:边的数组 157
27.3.3 边的表示:Edge对象 157
27.3.4 边的表示:邻接矩阵 157
27.3.5 边的表示:邻接线性表 158
27.4 图建模 159
27.5 图的可视化 168
27.6 图的遍历 171
27.7 深度优先搜索 171
27.7.1 深度优先搜索算法 171
27.7.2 深度优先搜索的实现 172
27.7.3 深度优先搜索的应用 174
27.8 广度优先搜索 174
27.8.1 广度优先搜索算法 174
27.8.2 广度优先搜索的实现 175
27.8.3 广度优先搜索的应用 177
27.9 实例学习:九个硬币反面的问题 177
27.10 实例学习:骑士旅行问题 181
关键术语 187
本章小结 187
复习题 188
编程练习题 188
第28章 加权图及其应用 193
28.1 引言 193
28.2 加权图的表示 193
28.2.1 加权边的表示:边数组 193
28.2.2 加权邻接矩阵 194
28.2.3 优先邻接链表 194
28.3 WeightedGraph类 195
28.4 最小生成树 201
28.4.1 最小生成树算法 201
28.4.2 MST算法的实现 203
28.5 寻找最短路径 206
28.5.1 最短路径算法 206
28.5.2 最短路径算法的实现 209
28.6 实例学习:加权的九枚硬币反面问题 212
关键术语 215
本章小结 215
复习题 215
编程练习题 216
第29章 多线程 220
29.1 引言 220
29.2 线程的概念 220
29.3 创建任务和线程 221
29.4 Thread类 223
29.5 举例:闪烁文本 225
29.6 GUI事件分发线程 226
29.7 实例学习:带音频的时钟 227
29.8 线程池 230
29.9 线程同步 232
29.9.1 synchronized关键字 234
29.9.2 同步语句 234
29.10 利用加锁同步 235
29.11 线程间协作 236
29.12 实例学习:生产者/消费者 240
29.13 阻塞队列 242
29.14 信号量 244
29.15 避免死锁 245
29.16 线程的状态 245
29.17 同步集合 246
29.18 SwingWorker 247
29.19 使用JProgressBar显示进度 250
关键术语 253
本章小结 253
复习题 253
编程练习题 255
第30章 网络 258
30.1 引言 258
30.2 客户端/服务器计算 258
30.2.1 服务器套接字 259
30.2.2 客户端套接字 259
30.2.3 通过套接字进行数据传输 260
30.2.4 客户端/服务器举例 260
30.3 InetAddress类 264
30.4 服务多个客户 265
30.5 applet客户端 268
30.6 发送和接收对象 270
30.7 从Web服务器上读取文件 274
30.8 JEditorPane类 276
30.9 实例学习:分布式井字游戏 278
本章小结 288
复习题 289
编程练习题 289
第31章 国际化 292
31.1 引言 292
31.2 Locale类 292
31.3 显示日期和时间 294
31.3.1 TimeZone类 294
31.3.2 DateFormat类 294
31.3.3 SimpleDateFormat类 295
31.3.4 DateFormatSymbols类 295
31.3.5 举例:显示国际时钟 296
31.3.6 举例:显示日历 299
31.4 格式化数字 304
31.4.1 普通数字格式 304
31.4.2 货币格式 305
31.4.3 百分比格式 305
31.4.4 转换数字 306
31.4.5 DecimalFormat类 306
31.4.6 举例:格式化数字 306
31.5 资源包 309
31.6 字符编码 315
关键术语 316
本章小结 316
复习题 317
编程练习题 317
第32章 JavaBeans和bean事件 320
32.1 引言 320
32.2 JavaBeans 320
32.3 bean属性 321
32.3.1 属性的命名方式 321
32.3.2 属性和数据域 321
32.4 Java事件模型回顾 322
32.4.1 事件类和事件监听器接口 322
32.4.2 源组件 323
32.4.3 监听器组件 323
32.5 创建自定义源组件 324
32.6 创建自定义事件组 328
关键术语 332
本章小结 332
复习题 332
编程练习题 333
第33章 容器、布局管理器和边框 336
33.1 引言 336
33.2 Swing容器的结构 336
33.2.1 JFrame 337
33.2.2 JApplet 337
33.2.3 JPanel 338
33.3 布局管理器 338
33.3.1 CardLayout 339
33.3.2 BoxLayout 341
33.3.3 使用null布局管理器 344
33.4 创建自定义布局管理器 345
33.5 JScrollPane 350
33.6 JTabbedPane 353
33.7 JSplitPane 355
33.8 Swing边框 357
本章小结 364
复习题 364
编程练习题 365
第34章 菜单、工具栏和对话框 368
34.1 引言 368
34.2 菜单 368
34.2.1 创建菜单 368
34.2.2 图标、热键和快捷键 370
34.2.3 举例:使用菜单 371
34.3 弹出式菜单 373
34.4 JToolBar 375
34.5 使用Action接口处理动作事件 377
34.6 JOptionPane对话框 380
34.6.1 消息对话框 381
34.6.2 确认对话框 382
34.6.3 输入对话框 382
34.6.4 选项对话框 383
34.6.5 举例:创建JOptionPane
对话框 384
34.7 创建自定义对话框 386
34.8 JColorChooser 389
34.9 JFileChooser 390
本章小结 394
复习题 395
编程练习题 395
第35章 MVC和Swing模型 398
35.1 引言 398
35.2 MVC 398
35.3 MVC的变体 404
35.4 Swing的模型-视图-控件体系结构 404
35.5 JSpinner 406
35.6 微调文本域模型和编辑器 407
35.6.1 SpinnerListModel 408
35.6.2 SpinnerNumberModel 408
35.6.3 SpinnerDateModel 409
35.6.4 微调文本域编辑器 410
35.6.5 举例:使用微调文本域模型和编辑器 410
35.7 JList及其模型 412
35.7.1 JList的构造方法、属性和方法 413
35.7.2 列表框布局方向 413
35.7.3 列表框选择模式和列表框选择模型 414
35.7.4 举例:列表框属性演示 414
35.8 列表模型 416
35.9 列表框单元格绘制器 419
35.10 JComboBox及其模型 422
关键术语 425
本章小结 425
复习题 426
编程练习题 426
第36章 JTable和JTree 430
36.1 引言 430
36.2 JTable 430
36.3 表格模型和表格列模型 435
36.4 自动排序和过滤 438
36.5 实例学习:修改表格的行和列 440
36.6 表格绘制器和编辑器 445
36.7 自定义表格绘制器和编辑器 447
36.8 表格模型事件 449
36.9 JTree 452
36.10 TreeModel和DefaultTreeModel 455
36.11 TreeNode、MutableTreeNode和DefaultMutableTreeNode 457
36.12 TreePath和TreeSelection-Model 460
36.13 实例学习:修改树 462
36.14 树结点的绘制和编辑 465
36.15 树事件 467
本章小结 467
复习题 467
编程练习题 468
第37章 Java数据库程序设计 471
37.1 引言 471
37.2 关系数据库系统 471
37.2.1 关系结构 472
37.2.2 完整性约束 473
37.3 SQL 474
37.3.1 在MySQL上创建用户账户 475
37.3.2 创建数据库 476
37.3.3 创建和删除表 476
37.3.4 简单插入、更新和删除 477
37.3.5 简单查询 478
37.3.6 比较运算符和布尔运算符 479
37.3.7 运算符like、between-and和
is null 479
37.3.8 列的别名 480
37.3.9 算术运算符 480
37.3.10 显示互不相同的元组 480
37.3.11 显示有序元组 481
37.3.12 联结表 481
37.4 JDBC 482
37.4.1 使用JDBC开发数据库应用程序 483
37.4.2 通过Java applet访问数据库 486
37.5 PreparedStatement 488
37.6 CallableStatement 491
37.7 获取元数据 493
37.7.1 数据库元数据 493
37.7.2 获取数据库表 494
37.7.3 结果集元数据 495
关键术语 496
本章小结 496
复习题 497
编程练习题 498
附录A Java关键字 500
附录B ASCII码字符集 501
附录C 运算符优先级表 502
附录D Java修饰符 503
附录E 特殊浮点值 504
附录F 数系 505
《汉英委婉语跨文化比较研究》内容简介:本专著通过跨文化交际的视角对汉英语言在职业委婉语、新闻委婉语、广告委婉语、死亡委婉语
《方汉奇文集(增订版)》内容简介:《方汉奇文集》(增订版)收录了方先生半个多世纪的研究成果和心得,史料丰富、考据严谨、笔法
《4D打印:改变未来商业生态》内容简介:相较于3D打印的蔚然成风,横空出世的4D虽说还有点显得冷清,却给人们打开了一扇更为广阔的
《跟我学SEO从入门到精通》内容简介:本书从实战出发,理论知识较少,目的是让绝大多数SEO初学者及从业人员直接习得大量可操作性高
excel图解应用大全全面 专业 实用 高效 本书特色 印刷装帧 平装前卫Excel专家20余载经验完全奉献!卖点1:内容全,更丰富 6篇25章近400个知识点...
《GraphQL学习指南》内容简介:本书为希望开始使用GraphQL的前端Web开发人员、后端工程师以及项目或产品经理提供了一条清晰的学习路
管理信息系统-(第2版) 本书特色 王要武编著的《管理信息系统(第2版高等学校信息管理示范教材)》系统全面介绍了管理信息系统相关知识,本书既可作为高等学校管理类...
《人工智能极简编程入门(基于Python)》内容简介:本书尝试介绍一个新的学习主张,用以帮助初学者轻松而高效地入门人工智能这一专
《R用户Python学习指南:数据科学方法》内容简介:掌握一门语言、一种工具已不足以应对当今的数据分析任务,本书旨在解决这一问题,
《知青变形记》内容简介:知青罗晓飞为争取回城,积极表现,却遭到诬陷入狱。阴差阳错之下,罗晓飞变身为村民范为国,开始了他看似
《JavaScript编程精解(原书第3版)》内容简介:本书第3版深入研究JavaScript语言,详细介绍如何编写漂亮、高效的代码。更新的内容
《锦衣卫》内容简介:还原历史上真正的锦衣卫 从锦衣卫角度讲述明朝政治机构的原貌 谈到明代,区别于其他朝代的最显著特征大概就是
The Adobe Illustrator CS2 Wow!Book 内容简介 本书由基础、提示、练习、技巧、画廊和参考资料等六个部分融合而成,每部分都是Ill...
菜鸟起飞,从这里开始!本笔记将透露:渗透、术语、脚本、内网、溢出各种攻击相关的手段和名词,总结、技巧、细节、亮点,不断变
在线阅读本书NowinitsFourthEdition,thisunrivaled,seminalworkcontinuesitslongtraditionof...
谁读懂《未来》,谁就能赢得《未来》上海译文出版社独家中文版权诺贝尔和平奖得主、美国政商界巨擘、奥斯卡最佳纪录片奖得主、纽
R图形化数据分析 本书特色 本书介绍如何使用图形化的方法来分析和理解复杂的数据,该方法突出数据中重要的关联和分布趋势,并使用尽可能简单的视觉元素来呈现尽可能丰富...
盛大游戏原画设计精选 内容简介 精选我国著名网络游戏公司盛大公司自主研发的游戏原画,内容包括草图设计、图面渲染、成图效果等设计过程,南京艺术学院游戏专业的专家对...
《曾国藩家书》内容简介:本书辑录了曾国藩在清道光30年至同治10年前后达30年的翰苑和从武生涯的书信一百六十余篇。家书涉及的内容
《文徵明琵琶行二种(中华碑帖精粹)》内容简介:文徵明,初名壁(也作璧),字徵明,后以字行,更字徵仲;祖籍衡山,自号衡山居士