新書推薦:
《
不被定义的年龄:积极年龄观让我们更快乐、健康、长寿
》
售價:HK$
77.3
《
南方谈话:邓小平在1992
》
售價:HK$
80.6
《
纷纭万端 : 近代中国的思想与社会
》
售價:HK$
109.8
《
中国古代文体形态研究(第四版)(中华当代学术著作辑要)
》
售價:HK$
168.0
《
朋党之争与北宋政治·大学问
》
售價:HK$
99.7
《
甲骨文丛书·波斯的中古时代(1040-1797年)
》
售價:HK$
88.5
《
以爱为名的支配
》
售價:HK$
62.7
《
台风天(大吴作品,每一种生活都有被看见的意义)
》
售價:HK$
53.8
編輯推薦:
本书是计算机核心课程系列的经典教材,内容丰富,总体上可分为两部分:*部分是Java编程基础;第二部分是复杂数据结构的Java设计与实现,专为两学期的课程而设计。
本书语言简洁、分析透彻,讲解清晰,借鉴了行业领先的Java软件解决方案,给出了学习Java的丰富案例,引领读者从Java入门到精通,在学习Java基础知识后,可设计实现复杂的数据结构。
內容簡介:
Java Foundations is a comprehensive textbook for introductory programming sequences. The versatile layout supports a two-or three-semester schedule and introduces you to the world of programming—from the basics, to complex data structures.
關於作者:
John Lewis 教授是美国知名的编程语言畅销教材的作者,撰写了多部有关Java编程导论、Java软件解决方案、Java数据结构以及计算机应用的相关教材。Lewis教授从美国弗吉尼亚大学获得了博士学位并一直在该校任教
目錄 :
目 录 第1章 绪论 1 1.1 Java程序设计语言 1 1.1.1 Java程序 2 1.1.2 注释 4 1.1.3 标识符与保留字 5 1.1.4 空白符 7 1.2 程序开发 8 1.2.1 程序设计语言分类 9 1.2.2 编辑器、编译器和 解释器 10 1.2.3 开发环境 12 1.2.4 语法与语义 12 1.2.5 错误 13 1.3 问题求解 14 1.4 软件开发活动 15 1.5 面向对象程序设计 16 1.5.1 面向对象软件原则 16 重要概念总结 19 术语总结 19 自测题 20 练习题 21 程序设计项目 21 自测题答案 23 第2章 数据与表达式 24 2.1 字符串 24 2.1.1 print和println方法 24 2.1.2 字符串连接 26 2.1.3 转义字符 28 2.2 变量与赋值 30 2.2.1 变量 30 2.2.2 赋值语句 32 2.2.3 常量 33 2.3 基本数据类型 34 2.3.1 整数与浮点数 34 2.3.2 字符型 35 2.3.3 布尔型 37 2.4 表达式 37 2.4.1 算术运算符 37 2.4.2 运算符优先级 38 2.4.3 自增运算符与自减 运算符 41 2.4.4 赋值运算符 42 2.5 数据转换 43 2.5.1 转换技术 44 2.6 读取输入数据 45 2.6.1 Scanner类 45 重要概念总结 48 术语总结 48 自测题 49 练习题 50 程序设计项目 51 自测题答案 52 第3章 使用类和对象 54 3.1 创建对象 54 3.1.1 别名 56 3.2 String类 57 3.3 包 60 3.3.1 import声明 61 3.4 Random类 62 3.5 Math类 64 3.6 格式化输出 67 3.6.1 NumberFormat类 67 3.6.2 DecimalFormat类 68 3.6.3 printf方法 70 3.7 枚举类型 70 3.8 包装类 72 3.8.1 自动装箱 74 重要概念总结 75 术语总结 75 自测题 75 练习题 76 程序设计项目 77 自测题答案 78 第4章 条件与循环 80 4.1 布尔表达式 80 4.1.1 相等运算符和关系 运算符 81 4.1.2 逻辑运算符 82 4.2 if语句 84 4.2.1 if-else语句 86 4.2.2 使用块语句 88 4.2.3 条件运算符 90 4.2.4 嵌套if语句 91 4.3 比较数据 92 4.3.1 比较浮点数 93 4.3.2 比较字符 93 4.3.3 比较对象 93 4.4 switch语句 95 4.5 while语句 98 4.5.1 无限循环 102 4.5.2 嵌套循环 103 4.5.3 其他循环控制 106 4.6 迭代器 106 4.6.1 读取文本文件 107 4.7 do语句 109 4.8 for语句 111 4.8.1 迭代器和for循环 115 4.8.2 循环语句比较 115 重要概念总结 116 术语总结 116 自测题 117 练习题 117 程序设计项目 120 自测题答案 122 第5章 编写类 124 5.1 重温类和对象 124 5.1.1 识别类和对象 125 5.1.2 职责分配 126 5.2 类的剖析 127 5.2.1 实例数据 130 5.2.2 UML类图 131 5.3 封装 132 5.3.1 可见性修饰符 133 5.3.2 访问器和更改器 134 5.4 方法的剖析 138 5.4.1 return语句 142 5.4.2 参数 143 5.4.3 本地数据 144 5.4.4 重温构造函数 145 5.5 静态类成员 145 5.5.1 静态变量 146 5.5.2 静态方法 146 5.6 类关系 149 5.6.1 依赖 149 5.6.2 同一个类中对象间 的依赖 149 5.6.3 聚合 151 5.6.4 this引用 155 5.7 方法设计 156 5.7.1 方法分解 156 5.7.2 重温方法参数 160 5.8 方法重载 163 5.9 测试 165 5.9.1 评审 166 5.9.2 缺陷测试 166 5.9.3 单元测试 167 5.9.4 集成测试 167 5.9.5 系统测试 168 5.9.6 测试驱动开发 168 5.10 调试 168 5.10.1 使用print语句的 简单调试 169 5.10.2 调试的概念 169 重要概念总结 170 术语总结 171 自测题 172 练习题 173 程序设计项目 174 自测题答案 175 第6章 图形用户界面 178 6.1 GUI元素 178 6.1.1 框架和面板 179 6.1.2 按钮和动作事件 182 6.1.3 确定事件源 183 6.2 更多组件 186 6.2.1 文本框 186 6.2.2 复选框 188 6.2.3 单选按钮 191 6.2.4 滑块 194 6.2.5 下拉框 197 6.2.6 定时器 201 6.3 布局管理器 204 6.3.1 流式布局管理器 207 6.3.2 边界布局管理器 208 6.3.3 网格布局管理器 210 6.3.4 盒式布局管理器 212 6.3.5 容器的层次结构 214 6.4 鼠标事件和按键事件 214 6.4.1 鼠标事件 214 6.4.2 按键事件 220 6.4.3 扩展适配器类 224 6.5 对话框 224 6.5.1 文件选择器 226 6.5.2 颜色选择器 228 6.6 一些重要细节 228 6.6.1 工具提示和助记符 231 6.7 GUI设计 236 重要概念总结 236 术语总结 237 自测题 238 练习题 239 程序设计项目 240 自测题答案 241 第7章 数组 243 7.1 数组元素 243 7.2 数组的声明与使用 244 7.2.1 边界检查 246 7.2.2 数组的其他语法 250 7.2.3 初始化列表 251 7.2.4 数组作为参数 252 7.3 对象数组 252 7.4 命令行参数 260 7.5 变长参数列表 261 7.6 二维数组 264 7.6.1 多维数组 267 重要概念总结 268 术语总结 268 自测题 269 练习题 269 程序设计项目 270 自测题答案 272 第8章 继承 273 8.1 创建子类 273 8.1.1 受保护的修饰符 277 8.1.2 super引用 278 8.1.3 多重继承 281 8.2 方法重写 281 8.2.1 影子变量 284 8.3 类的层次结构 284 8.3.1 对象类 285 8.3.2 抽象类 286 8.4 可见性 288 8.5 设计继承 290 8.5.1 限制继承 291 重要概念总结 291 术语总结 292 自测题 292 练习题 292 程序设计项目 293 自测题答案 294 第9章 多态 295 9.1 动态绑定 295 9.2 使用继承实现多态 296 9.3 接口 305 9.3.1 接口的层次结构 309 9.3.2 Comparable接口 310 9.3.3 Iterator接口 310 9.4 通过接口实现多态 310 9.4.1 事件处理 312 重要概念总结 313 术语总结 313 自测题 314 练习题 314 程序设计项目 314 自测题答案 315 第10章 异常 317 10.1 异常处理 317 10.2 不捕获异常 318 10.3 try-catch语句 319 10.3.1 finally子句 321 10.4 异常传播 322 10.5 异常类的层次结构 325 10.5.1 受检查和不受检查 的异常 327 10.6 IO异常 327 重要概念总结 331 术语总结 331 自测题 332 练习题 332 程序设计项目 332 自测题答案 333 第11章 算法分析 334 11.1 算法效率 334 11.2 增长函数和大O符号 335 11.3 增长函数的比较 337 11.4 确定时间复杂度 338 11.4.1 分析循环的执行 338 11.4.2 嵌套循环 339 11.4.3 方法调用 340 重要概念总结 341 术语总结 342 自测题 342 练习题 342 自测题答案 343 第12章 集合 344 12.1 集合概述 344 12.1.1 抽象数据类型 345 12.1.2 Java Collections API 346 12.2 栈集合 347 12.3 至关重要的OO概念 348 12.3.1 继承与多态 349 12.3.2 泛型 349 12.4 使用栈计算后缀表达式 350 12.4.1 Javadoc 356 12.5 异常 357 12.6 栈ADT 357 12.7 用数组实现栈 360 12.7.1 容量管理 361 12.8 ArrayStack类 361 12.8.1 构造函数 362 12.8.2 push操作 364 12.8.3 pop操作 365 12.8.4 peek操作 366 12.8.5 其他操作 366 12.8.6 EmptyCollectionException ?类 366 12.8.7 其他实现 367 重要概念总结 367 术语总结 368 自测题 368 练习题 369 程序设计项目 370 自测题答案 370 第13章 链式结构 372 13.1 引用作为链 372 13.2 管理链表 374 13.2.1 访问元素 374 13.2.2 插入节点 375 13.2.3 删除节点 375 13.3 无元素的链表 376 13.3.1 双向链表 377 13.4 Java API中的栈 377 13.5 使用Stacks:遍历迷宫 377 13.6 实现栈:使用链表 385 13.6.1 LinkedStack类 385 13.6.2 push操作 388 13.6.3 pop操作 389 13.6.4 其他操作 390 重要概念总结 390 术语总结 391 自测题 391 练习题 391 程序设计项目 392 自测题答案 392 第14章 队列 394 14.1 队列的概念 394 14.2 Java API中的队列 395 14.3 使用队列:密钥 396 14.4 使用队列:模拟票务柜台 399 14.5 队列ADT 403 14.6 队列的链式实现 404 14.6.1 enqueue操作 406 14.6.2 dequeue操作 406 14.6.3 其他操作 408 14.7 使用数组实现队列 408 14.7.1 enqueue操作 412 14.7.2 dequeue操作 413 14.7.3 其他操作 414 14.8 双端队列 414 重要概念总结 414 术语总结 415 自测题 415 练习题 415 程序设计项目 416 自测题答案 417 第15章 列表 418 15.1 列表集合 418 15.2 Java Collections API中的 列表 420 15.3 使用无序列表:学位课程 421 15.4 使用索引列表:Josephus 429 15.5 列表ADT 431 15.5.1 向列表添加元素 432 15.6 用数组实现列表 436 15.6.1 remove操作 437 15.6.2 contain操作 439 15.6.3 有序列表的add 操作 440 15.6.4 特定于无序列表的 操作 441 15.6.5 无序列表的addAfter 操作 441 15.7 用链表实现列表 442 15.7.1 remove操作 443 重要概念总结 444 术语总结 444 自测题 445 练习题 445 程序设计项目 446 自测题答案 447 第16章 迭代器 448 16.1 什么是迭代器 448 16.1.1 迭代器的其他 问题 450 16.2 使用迭代器:重温学位 课程 450 16.2.1 打印指定课程 454 16.2.2 删除课程 455 16.3 使用数组实现迭代器 456 16.4 使用链表实现迭代器 458 重要概念总结 460 术语总结 460 自测题 460 练习题 460 自测题答案 461 第17章 递归 462 17.1 递归思想 462 17.1.1 无限递归 463 17.1.2 数学中的递归 463 17.2 递归编程 464 17.2.1 递归与迭代 466 17.2.2 直接递归与间接 递归 467 17.3 使用递归 467 17.3.1 穿越迷宫 467 17.3.2 汉诺塔 474 17.4 递归算法分析 477 重要概念总结 479 术语总结 479 自测题 479 练习题 480 程序设计项目 480 自测题答案 481 第18章 搜索与排序 483 18.1 搜索 483 18.1.1 静态方法 484 18.1.2 泛型方法 484 18.1.3 线性搜索 485 18.1.4 二分搜索 486 18.1.5 搜索算法比较 488 18.2 排序 489 18.2.1 选择排序 491 18.2.2 插入排序 493 18.2.3 冒泡排序 494 18.2.4 快速排序 496 18.2.5 合并排序 499 18.3 基数排序 501 18.4 排序效率和线程 505 18.4.1 线程 505 18.4.2 排序比较的演示 506 18.5 排序比较器的不同方式 517 重要概念总结 522 术语总结 523 自测题 523 练习题 524 程序设计项目 525 自测题答案 525 第19章 树 527 19.1 树的定义 527 19.1.1 树分类 528 19.2 实现树的策略 529 19.2.1 树的数组实现的 计算策略 530 19.2.2 树的数组实现的 模拟链式策略 530 19.2.3 树的分析 531 19.3 树的遍历 532 19.3.1 前序遍历 532 19.3.2 中序遍历 533 19.3.3 后序遍历 533 19.3.4 层序遍历 534 19.4 二叉树ADT 534 19.5 使用二叉树:表达式树 537 19.6 背痛分析仪 547 19.7 使用链表实现二叉树 552 19.7.1 find方法 556 19.7.2 iteratorInOrder 方法 557 重要概念总结 558 术语总结 558 自测题 559 练习题 560 程序设计项目 560 自测题答案 561 第20章 二叉搜索树 562 20.1 二叉搜索树概述 562 20.1.1 向二叉搜索树添加 元素 563 20.1.2 删除二叉搜索树中 的元素 564 20.2 实现二叉搜索树 566 20.3 用链表实现二叉搜索树 568 20.3.1 addElement操作 569 20.3.2 removeElement 操作 571 20.3.3 removeAllOccurrences 操作 573 20.3.4 removeMin操作 574 20.3.5 用数组实现二叉 搜索树 575 20.4 使用二叉搜索树实现有序 列表 575 20.4.1 BinarySearchTreeList 实现分析 578 20.5 平衡二叉搜索树 579 20.5.1 右旋 580 20.5.2 左旋 580 20.5.3 右左旋 581 20.5.4 左右旋 581 20.6 实现二叉搜索树:AVL树 582 20.6.1 AVL树的右旋 582 20.6.2 AVL树中的左旋 583 20.6.3 AVL树中的 右左旋 583 20.6.4 AVL树中的 左右旋 583 20.7 实现二叉搜索树:红黑树 584 20.7.1 红黑树中的插入 元素 585 20.7.2 从红黑树中删除 元素 587 重要概念总结 589 术语总结 589 自测题 590 练习题 590 程序设计项目 591 自测题答案 591 第21章 堆与优先队列 593 21.1 堆 593 21.1.1 addElement操作 595 21.1.2 removeMin操作 596 21.1.3 findMin 操作 597 21.2 堆的应用:优先级队列 597 21.3 用链表实现堆 600 21.3.1 addElement 操作 601 21.3.2 removeMin操作 604 21.3.3 findMin操作 606 21.4 用数组实现堆 606 21.4.1 addElement操作 608 21.4.2 removeMin操作 609 21.4.3 findMin操作 611 21.5 堆的应用:堆排序 611 重要概念总结 612 术语总结 613 自测题 613 练习题 614 程序设计项目 614 自测题答案 615 第22章 集与映射 616 22.1 集与映射集合 616 22.2 Java API中的集与映射 617 22.3 Set的应用:域拦截器 619 22.4 Map的应用:产品销售 621 22.5 Map的应用:用户管理 625 22.6 使用树实现Set和Map 629 22.7 使用散列实现Set和Map 629 重要概念总结 631 术语总结 632 自测题 632 练习题 632 程序设计项目 633 自测题答案 633 第23章 多路搜索树 634 23.1 组合树的概念 634 23.2 2-3树 634 23.2.1 将元素插入2-3 树 635 23.2.2 从2-3树中删除 元素 637 23.3 2-4树 639 23.4 B-树 640 23.4.1 B*-树 642 23.4.2 B -树 642 23.4.3 B-树分析 642 23.5 B-树的实现策略 643 重要概念总结 643 术语总结 644 自测题 644 练习题 645 程序设计项目 645 自测题答案 645 第24章 图 647 24.1 无向图 647 24.2 有向图 649 24.3 网络 650 24.4 常用的图算法 651 24.4.1 遍历 651 24.4.2 测试连通性 654 24.4.3 最小生成树 655 24.4.4 确定最短路径 658 24.5 实现图的策略 658 24.5.1 邻接表 659 24.5.2 邻接矩阵 659 24.6 用邻接矩阵实现无向图 660 24.6.1 addEdge方法 663 24.6.2 addVertex方法 664 24.6.3 expandCapacity 方法 665 24.6.4 其他方法 665 重要概念总结 665 术语总结 666 自测题 666 练习题 667 程序设计项目 667 自测题答案 668 第25章 数据库 669 25.1 数据库简介 669 25.2 建立与数据库的连接 671 25.2.1 获取数据库驱动 程序 671 25.3 创建与更改数据库表 673 25.3.1 创建表 673 25.3.2 更改表 674 25.3.3 删除列 675 25.4 查询数据库 675 25.4.1 显示列 676 25.5 数据的插入、浏览与更新 677 25.5.1 插入 678 25.5.2 SELECT-FROM 679 25.5.3 更新 683 25.6 删除数据和数据库表 684 25.6.1 删除数据 684 25.6.2 删除数据库表 684 重要概念总结 685 自测题 685 练习题 685 程序设计项目 686 自测题答案 687 第26章 JavaFX 688 26.1 JavaFX简介 688 26.2 JavaFX的Hello World 程序 689 26.3 使用JavaFX Scene Builder 691 26.3.1 创建应用程序 项目 692 26.3.2 浏览项目文件 693 26.3.3 使用JavaFX Scene Builder修改GUI 695 26.4 JavaFX中的事件处理 696 重要概念总结 700 自测题 700 程序设计项目 700 自测题答案 701 附录A 词汇表 702 附录B 数系 725 B.1 位值 725 B.2 基数大于10 726 B.3 转换 728 B.4 快捷转换 729 练习题 730 附录C Unicode字符集 733 附录D Java运算符 735 附录E Java修饰符 739 附录F Java图形 741 F.1 坐标系 741 F.2 表示颜色 741 F.3 绘图 742 F.4 多边形和折线 749 F.5 Polygon类 751 练习 752 程序设计项目 752 附录G Java小程序 754 G.1 在HTML中嵌入Applet 755 G.2 更多的Applet方法 756 G.3 小程序中的GUI 759 程序设计项目 765 附录H 正则表达式 766 附录I 散列 767 I.1 散列概述 767 I.2 散列函数 769 I.2.1 除留余数法 769 I.2.2 折叠法 769 I.2.3 平方取中法 770 I.2.4 基数转换法 770 I.2.5 数字分析法 770 I.2.6 长度依赖法 771 I.2.7 Java语言中的散列 函数 771 I.3 解决冲突 771 I.3.1 链接法 771 I.3.2 开放寻址法 773 I.4 删除散列表元素 775 I.4.1 从链接实现中删除 元素 775 I.4.2 从开放寻址实现中 删除 776 I.5 Java Collections API中的 散列表 776 I.5.1 Hashtable类 777 I.5.2 HashSet类 778 I.5.3 HashMap类 779 I.5.4 IdentityHashMap类 780 I.5.5 WeakHashMap类 781 I.5.6 LinkedHashSet和 LinkedHashMap 782 重要概念 783 自测题 783 练习 784 程序设计项目 784 自测题答案 785
內容試閱 :
译 者 序
程序设计和数据结构是计算机科学的重要理论基础,也是计算机科学专业的核心课程。本书是计算机核心课程系列的经典教材,分为两部分:Java编程基础和数据结构的Java设计与实现,专为两学期的课程设计。本书前后两部分内容的连贯性与一致性,实现了两门课程的完美衔接,语言简洁,分析透彻合理,讲解清晰,使学生能得心应手地运用所学的Java基础知识,设计实现复杂的数据结构。
在第一部分,借鉴了行业领先的Java软件解决方案,给出了学习Java的最佳资料。本书根据程序设计的要素来组织,共分10章,分别介绍了Java的开发环境、数据与表达式、类与对象、条件与循环、类、图形用户界面、数组、继承、多态和异常等。
在第二部分,涉及集合和数据结构的构建,共分16章,分别介绍了算法分析、栈、队列、列表、迭代器、递归、搜索与排序、树、二叉搜索树、堆与优先级队列、集与映射、多路搜索树、图、数据库和JavaFX。
本书内容严谨,组织合理,不仅学习内容脉络清晰,还是对编程概念的全面性、连贯性和无缝连接性的有益探索。另外,本书专业性强,提供了大量真实的代码,给出了许多实用的程序示例。本书的另一特色是课后的练习和程序设计项目,能进一步提升学生对课本内容的理解,印证所学习内容,将刻板的书本知识,转化成学生自身的编程能力。
在本书翻译的过程中,译者融会贯通,深刻体会,掌握作者的思想脉络,达到翻译透彻,忠实于原著。
感谢清华大学出版社的编辑龙启铭先生,在我翻译过程中给予的帮助、建议与支持。
感谢为本书出版做出贡献的每一位参与者,感谢他们付出的真心和努力。
鉴于译者的能力有限,译文难免会出现纰漏,请各位同行和专家批评指正。
译者
2019年8月
前言
欢迎开启Java学习之旅。本书是程序设计课程和数据结构课程的组合,所以由两部分组成,第一部分是Java编程基础;第二部分是复杂数据结构的Java语言程序设计与实现。本书是计算机入门课程系列的经典教材,学习时限为两个学期。因为本书的两部分内容采用统一的方法进行编写,所以使Java的基础知识与实现完美衔接。学生在使用本教材时,能更加真实地感知两门课程间的无缝连接,前后内容的连贯性与一致性,也能使学生更加得心应手地运用所学的Java基础知识,设计实现复杂的数据结构。
本书借鉴行业领先的Java软件解决方案,找出学习Java的最佳资料,从而使重新修订的第4版图书内容更加丰富,设计与实现更接地气。例如,本书不是零散地在许多章节中介绍图形用户界面,而是用单独的一章全面地介绍图形用户界面。
在后面的章节中,本书也是在介绍Java软件结构之后,才涉及集合和数据结构的构建。这样做不仅使学习内容脉络更加清晰,还是对编程概念的全面性、连贯性和无缝连接性的有益探索。
第4版新特色
值得欣慰的是,我们收到了关于第3版图书的许多反馈意见。为了更好地为读者服务,使本书成为更经典的计算机课程的入门教材,我们对第3版图书的相关主题进行了修改和完善,具体内容如下:
* 新增加了一章:第26章JavaFX。
* 在第18章中增加了动画演示应用程序:即用动画演示各类排序算法,从而使读者能直观地比较不同算法的效率。
* 在新的排序动画演示示例中,增加了线程处理的介绍。
* 增加了一节:Comparable接口的使用。
* 修订了关于二叉搜索树的讨论,从而使讨论内容更加丰富。
根据读者的反馈意见,我们保留了原来Swing的相关内容,增加了一章JavaFX。也就是说,我们并没有用JavaFX完全替换Swing。我们知道,随着技术的进步,JavaFX终将会取代Swing。但就目前而言,由于基于Swing的代码数量之多,所以在特定时间段内,Swing知识还是非常重要的。
在第3版中,我们所讨论集合的相关内容脉络如下:
反馈意见表明,这种学习方法得到了读者的一致好评,因此,第4版除了继续保留这部分内容之外,还要将其发扬光大。第4版进一步阐明了Java API支持特定集合的方式与从零开始实现之间的区别。因此,教师能轻松地以比较和对比的方式指出API实现的限制。同时,这种学习方法还允许教师就事论事,根据所需,只简单地介绍集合而无须探讨实现细节。
第4版的修订是建立在前面版本所构建的强有力的教学法基础之上,为教师提供更多的选择机会。不同的教师,可以根据自己的授课内容,选择不同的主题。因此,第4版使教师能更灵活地把控自己的授课内容。
内容解析
第1章(绪论)介绍Java程序设计语言和程序开发基础,内容涵盖面向对象开发的相关概念和术语。该章是介绍性内容,旨在使学生熟悉Java开发环境。
第2章(数据与表达式)探讨Java编程所需的基本数据类型,执行运算所用的表达式,数据类型之间的转换以及借助Scanner类实现对用户交互输入数据的读取。
第3章(使用类和对象)探讨预定义类的使用和基于预定义类创建对象。类和对象主要用于处理字符串,生成随机数,执行复杂计算和格式化输出。此外,还讨论包、枚举类型和包装类。
第4章(条件与循环)介绍如何用布尔表达式进行判断。该章讨论所有与条件和循环相关的语句,包括for循环的增强版,介绍用Scanner类对迭代输入进行解析和读取文本 文件。
第5章(编写类)探讨与编写类和方法相关的问题,主题包括实例数据、可见性、范围、方法参数和返回类型。该章介绍构造函数、方法设计、静态数据和方法重载,也介绍测试与调试。
第6章(图形用户界面)探讨Java GUI的处理,重点是组件、事件和监听器。该章借助大量的GUI示例,具体讨论各种类型的组件和事件。同时,还介绍布局管理器、容器的层次结构、边框、提示工具和助记符。
第7章(数组)介绍数组和数组的处理。该章所涉及的主题包括边界检查、初始化器列表、命令行参数、变长参数列表和多维数组。
第8章(继承)介绍类派生、类的层次结构、覆盖和可见性等相关概念。该章的重点是正确使用继承,并要求学生了解继承在软件设计中的作用。
第9章(多态)探讨绑定的概念,绑定与多态之间的关系;分析如何使用继承或接口实现多态引用。此外,该章还分析多态设计问题。
第10章(异常)介绍异常处理,未捕获异常产生的影响,分析try-catch语句,讨论异常的传播。该章还探讨在处理输入和输出时如何使用异常,重点分析写入文本文件的示例。
第11章(算法分析)给出分析算法效率的基石,给出开发人员比较算法的重要标准和方法。该章的重点不是数学公式和推导,而是理解算法相关的重要概念。
第12章(集合与栈)介绍集合的概念,强调将接口与实现分离的需求。本章还在概念层面介绍栈,探讨基于数组的栈的实现。
第13章(链式结构与栈)讨论使用引用来创建链式数据结构,探讨链表管理的基本问题,并使用底层链式数据结构(参见第3章)定义栈的替代实现。
第14章(队列)探讨队列的概念,实现先进先出队列,以基数排序为例使队列内容形象化。最后,讨论基于底层链表、定长数组和循环数组的队列实现。
第15章(列表)介绍3种类型的列表:有序列表、无序列表和索引列表。本章对这3种类型列表进行比较和对比,讨论它们的共享操作和每种列表的独有操作。在设计各种不同类型列表时,用户都可以使用继承。列表既可以用数组实现,也可以用链表实现。
第16章(迭代器)是新增加的一章。该章介绍迭代器的概念和实现。对集合而言,迭代器非常重要。本章的扩展讨论部分进一步探讨将迭代器功能与任何特定集合细节分开的需求。
第17章(递归)介绍递归的概念,优秀的递归解决方案,递归的实现细节。该章还分析了递归算法的基本思想。
第18章(搜索与排序)讨论线性搜索算法和二分搜索算法;分析一些排序算法,如选择排序、插入排序、冒泡排序、快速排序和合并排序。该章的重点是搜索和排序的编程问题,比如比较对象要用Comparable接口。该章用动画程序演示排序算法的效率。当然,对比较器接口的分析与演示也非常到位。
第19章(树)概括介绍树、树的重要术语和概念。该章讨论树的各种实现方法,使用二叉树来表示计算算术表达式。
第20章(二叉搜索树)据第10章所介绍的树的基本概念,定义经典的二叉搜索树。该章先分析二叉搜索树的链式实现,之后讨论树节点的平衡对树的性能所产生的影响,最后进一步探讨二叉树的AVL实现和红黑二叉树的实现。
第21章(堆与优先队列)探讨堆的概念、使用和实现,特别介绍堆与优先队列的关系。该章给出堆排序的示例,用以证明堆的实用性。此外,还介绍堆的链式实现和数组实现。
第22章(集与映射)探讨集合的两种类型,即集和映射,强调集和映射对JavaCollections API的重要性。
第23章(多路搜索树)是前几章讨论的自然延伸,分析2-3树、2-4树和通用B树。此外,还讨论各种树的实现。
第24章(图)介绍无向图和有向图的概念,与图相关的重要术语。该章还分析一些常见的图算法,讨论图的实现,详细分析图的邻接矩阵实现。
第25章(数据库)先探讨数据库的概念、管理以及SQL查询的基本原理,之后探讨了连接Java程序与数据库的技术,最后介绍与数据库交互所用到的API。
第26章(JavaFX)先介绍多个GUI和图形的示例,这些示例都使用新的JavaFX框架,之后介绍一些JavaFX元素,对Swing和JavaFX的方法进行了比较,最后,分析JavaFX场景生成器应用。
补充资料
本书为学生提供的资源如下:
* 提供本书所有程序的源代码;
* 提供选择本书主题的视频提示。
通过访问网址:www.pearsonhighered.comcs-resources,学生可获取上述资源。
在培生教育的教师资源中心,教师可以找到如下资源:
* 本书的练习题答案和编程项目源代码;
* 本书的PPT讲义;
* 题库。
教师可以通过访问网址:www.pearsonhighered.comirc获取上述资源;也可以发信至longqm@163.com获得上述资源。