资源名称:Java语言程序设计-进阶篇(原书第8版)PDF

内容简介:

本书是Java语言的经典教材,畅销多年不衰。本书全面整合了Java的特性,采用“先讲基础”的教学方式,循序渐进地介绍了程序设计基础、面向对象程序设计、GUI程序设计等。另外,本书还全面且深入地覆盖了一些高级主题,包括算法和数据结构、并发、网络、国际化、高级GUI、数据库和Web程序设计等。

本书中文版由《Java语言程序设计 基础篇》和《Java语言程序设计 进阶篇》组成。基础篇对应原书的第1~20章,进阶篇对应原书的第21~37章。

 本书特点

基础篇介绍基础内容,进阶篇介绍高级内容,教师可以按需选择理想的教材。

 全面整合了Java的特性,并对全书的内容进行了修订和更新,以反映Java程序设计方面的最新技术进展。

 提供面向对象程序设计的深入探讨,包含GUI程序设计的基础和扩展实例。

 提供大量实例,实例中都包括问题求解的详细步骤。

 提供大量难易程度不同的习题,在本书配套的网站中还提供了大量的交互式自测题。

作者简介:

Y.Daniel Liang 普度大学终身教授,阿姆斯特朗亚特兰大州立大学计算机科学系教授。他所编写的Java教程在美国大学Java课程中采用率极高,同时他还兼任Prentice Hall Java系列丛书的编辑。

资源目录:

第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

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。