编辑推荐
本书是计算机核心课程系列的经典教材,内容丰富,总体上可分为两部分:*部分是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章 绪论 11.1 Java程序设计语言 11.1.1 Java程序 21.1.2 注释 41.1.3 标识符与保留字 51.1.4 空白符 71.2 程序开发 81.2.1 程序设计语言分类 91.2.2 编辑器、编译器和解释器 101.2.3 开发环境 121.2.4 语法与语义 121.2.5 错误 131.3 问题求解 141.4 软件开发活动 151.5 面向对象程序设计 161.5.1 面向对象软件原则 16重要概念总结 19术语总结 19自测题 20练习题 21程序设计项目 21自测题答案 23第2章 数据与表达式 242.1 字符串 242.1.1 print和println方法 242.1.2 字符串连接 262.1.3 转义字符 282.2 变量与赋值 302.2.1 变量 302.2.2 赋值语句 322.2.3 常量 332.3 基本数据类型 342.3.1 整数与浮点数 342.3.2 字符型 352.3.3 布尔型 372.4 表达式 372.4.1 算术运算符 372.4.2 运算符优先级 382.4.3 自增运算符与自减运算符 412.4.4 赋值运算符 422.5 数据转换 432.5.1 转换技术 442.6 读取输入数据 452.6.1 Scanner类 45重要概念总结 48术语总结 48自测题 49练习题 50程序设计项目 51自测题答案 52第3章 使用类和对象 543.1 创建对象 543.1.1 别名 563.2 String类 573.3 包 603.3.1 import声明 613.4 Random类 623.5 Math类 643.6 格式化输出 673.6.1 NumberFormat类 673.6.2 DecimalFormat类 683.6.3 printf方法 703.7 枚举类型 703.8 包装类 723.8.1 自动装箱 74重要概念总结 75术语总结 75自测题 75练习题 76程序设计项目 77自测题答案 78第4章 条件与循环 804.1 布尔表达式 804.1.1 相等运算符和关系运算符 814.1.2 逻辑运算符 824.2 if语句 844.2.1 if-else语句 864.2.2 使用块语句 884.2.3 条件运算符 904.2.4 嵌套if语句 914.3 比较数据 924.3.1 比较浮点数 934.3.2 比较字符 934.3.3 比较对象 934.4 switch语句 954.5 while语句 984.5.1 无限循环 1024.5.2 嵌套循环 1034.5.3 其他循环控制 1064.6 迭代器 1064.6.1 读取文本文件 1074.7 do语句 1094.8 for语句 1114.8.1 迭代器和for循环 1154.8.2 循环语句比较 115重要概念总结 116术语总结 116自测题 117练习题 117程序设计项目 120自测题答案 122第5章 编写类 1245.1 重温类和对象 1245.1.1 识别类和对象 1255.1.2 职责分配 1265.2 类的剖析 1275.2.1 实例数据 1305.2.2 UML类图 1315.3 封装 1325.3.1 可见性修饰符 1335.3.2 访问器和更改器 1345.4 方法的剖析 1385.4.1 return语句 1425.4.2 参数 1435.4.3 本地数据 1445.4.4 重温构造函数 1455.5 静态类成员 1455.5.1 静态变量 1465.5.2 静态方法 1465.6 类关系 1495.6.1 依赖 1495.6.2 同一个类中对象间的依赖 1495.6.3 聚合 1515.6.4 this引用 1555.7 方法设计 1565.7.1 方法分解 1565.7.2 重温方法参数 1605.8 方法重载 1635.9 测试 1655.9.1 评审 1665.9.2 缺陷测试 1665.9.3 单元测试 1675.9.4 集成测试 1675.9.5 系统测试 1685.9.6 测试驱动开发 1685.10 调试 1685.10.1 使用print语句的简单调试 1695.10.2 调试的概念 169重要概念总结 170术语总结 171自测题 172练习题 173程序设计项目 174自测题答案 175第6章 图形用户界面 1786.1 GUI元素 1786.1.1 框架和面板 1796.1.2 按钮和动作事件 1826.1.3 确定事件源 1836.2 更多组件 1866.2.1 文本框 1866.2.2 复选框 1886.2.3 单选按钮 1916.2.4 滑块 1946.2.5 下拉框 1976.2.6 定时器 2016.3 布局管理器 2046.3.1 流式布局管理器 2076.3.2 边界布局管理器 2086.3.3 网格布局管理器 2106.3.4 盒式布局管理器 2126.3.5 容器的层次结构 2146.4 鼠标事件和按键事件 2146.4.1 鼠标事件 2146.4.2 按键事件 2206.4.3 扩展适配器类 2246.5 对话框 2246.5.1 文件选择器 2266.5.2 颜色选择器 2286.6 一些重要细节 2286.6.1 工具提示和助记符 2316.7 GUI设计 236重要概念总结 236术语总结 237自测题 238练习题 239程序设计项目 240自测题答案 241第7章 数组 2437.1 数组元素 2437.2 数组的声明与使用 2447.2.1 边界检查 2467.2.2 数组的其他语法 2507.2.3 初始化列表 2517.2.4 数组作为参数 2527.3 对象数组 2527.4 命令行参数 2607.5 变长参数列表 2617.6 二维数组 2647.6.1 多维数组 267重要概念总结 268术语总结 268自测题 269练习题 269程序设计项目 270自测题答案 272第8章 继承 2738.1 创建子类 2738.1.1 受保护的修饰符 2778.1.2 super引用 2788.1.3 多重继承 2818.2 方法重写 2818.2.1 影子变量 2848.3 类的层次结构 2848.3.1 对象类 2858.3.2 抽象类 2868.4 可见性 2888.5 设计继承 2908.5.1 限制继承 291重要概念总结 291术语总结 292自测题 292练习题 292程序设计项目 293自测题答案 294第9章 多态 2959.1 动态绑定 2959.2 使用继承实现多态 2969.3 接口 3059.3.1 接口的层次结构 3099.3.2 Comparable接口 3109.3.3 Iterator接口 3109.4 通过接口实现多态 3109.4.1 事件处理 312重要概念总结 313术语总结 313自测题 314练习题 314程序设计项目 314自测题答案 315第10章 异常 31710.1 异常处理 31710.2 不捕获异常 31810.3 try-catch语句 31910.3.1 finally子句 32110.4 异常传播 32210.5 异常类的层次结构 32510.5.1 受检查和不受检查的异常 32710.6 I/O异常 327重要概念总结 331术语总结 331自测题 332练习题 332程序设计项目 332自测题答案 333第11章 算法分析 33411.1 算法效率 33411.2 增长函数和大O符号 33511.3 增长函数的比较 33711.4 确定时间复杂度 33811.4.1 分析循环的执行 33811.4.2 嵌套循环 33911.4.3 方法调用 340重要概念总结 341术语总结 342自测题 342练习题 342自测题答案 343第12章 集合 34412.1 集合概述 34412.1.1 抽象数据类型 34512.1.2 Java CollectionsAPI 34612.2 栈集合 34712.3 至关重要的OO概念 34812.3.1 继承与多态 34912.3.2 泛型 34912.4 使用栈计算后缀表达式 35012.4.1 Javadoc 35612.5 异常 35712.6 栈ADT 35712.7 用数组实现栈 36012.7.1 容量管理 36112.8 ArrayStack类 36112.8.1 构造函数 36212.8.2 push操作 36412.8.3 pop操作 36512.8.4 peek操作 36612.8.5 其他操作 36612.8.6 EmptyCollectionException?类 36612.8.7 其他实现 367重要概念总结 367术语总结 368自测题 368练习题 369程序设计项目 370自测题答案 370第13章 链式结构 37213.1 引用作为链 37213.2 管理链表 37413.2.1 访问元素 37413.2.2 插入节点 37513.2.3 删除节点 37513.3 无元素的链表 37613.3.1 双向链表 37713.4 Java API中的栈 37713.5 使用Stacks:遍历迷宫 37713.6 实现栈:使用链表 38513.6.1 LinkedStack类 38513.6.2 push操作 38813.6.3 pop操作 38913.6.4 其他操作 390重要概念总结 390术语总结 391自测题 391练习题 391程序设计项目 392自测题答案 392第14章 队列 39414.1 队列的概念 39414.2 Java API中的队列 39514.3 使用队列:密钥 39614.4 使用队列:模拟票务柜台 39914.5 队列ADT 40314.6 队列的链式实现 40414.6.1 enqueue操作 40614.6.2 dequeue操作 40614.6.3 其他操作 40814.7 使用数组实现队列 40814.7.1 enqueue操作 41214.7.2 dequeue操作 41314.7.3 其他操作 41414.8 双端队列 414重要概念总结 414术语总结 415自测题 415练习题 415程序设计项目 416自测题答案 417第15章 列表 41815.1 列表集合 41815.2 Java Collections API中的列表 42015.3 使用无序列表:学位课程 42115.4 使用索引列表:Josephus 42915.5 列表ADT 43115.5.1 向列表添加元素 43215.6 用数组实现列表 43615.6.1 remove操作 43715.6.2 contain操作 43915.6.3 有序列表的add操作 44015.6.4 特定于无序列表的操作 44115.6.5 无序列表的addAfter操作 44115.7 用链表实现列表 44215.7.1 remove操作 443重要概念总结 444术语总结 444自测题 445练习题 445程序设计项目 446自测题答案 447第16章 迭代器 44816.1 什么是迭代器 44816.1.1 迭代器的其他问题 45016.2 使用迭代器:重温学位课程 45016.2.1 打印指定课程 45416.2.2 删除课程 45516.3 使用数组实现迭代器 45616.4 使用链表实现迭代器 458重要概念总结 460术语总结 460自测题 460练习题 460自测题答案 461第17章 递归 46217.1 递归思想 46217.1.1 无限递归 46317.1.2 数学中的递归 46317.2 递归编程 46417.2.1 递归与迭代 46617.2.2 直接递归与间接递归 46717.3 使用递归 46717.3.1 穿越迷宫 46717.3.2 汉诺塔 47417.4 递归算法分析 477重要概念总结 479术语总结 479自测题 479练习题 480程序设计项目 480自测题答案 481第18章 搜索与排序 48318.1 搜索 48318.1.1 静态方法 48418.1.2 泛型方法 48418.1.3 线性搜索 48518.1.4 二分搜索 48618.1.5 搜索算法比较 48818.2 排序 48918.2.1 选择排序 49118.2.2 插入排序 49318.2.3 冒泡排序 49418.2.4 快速排序 49618.2.5 合并排序 49918.3 基数排序 50118.4 排序效率和线程 50518.4.1 线程 50518.4.2 排序比较的演示 50618.5 排序比较器的不同方式 517重要概念总结 522术语总结 523自测题 523练习题 524程序设计项目 525自测题答案 525第19章 树 52719.1 树的定义 52719.1.1 树分类 52819.2 实现树的策略 52919.2.1 树的数组实现的计算策略 53019.2.2 树的数组实现的模拟链式策略 53019.2.3 树的分析 53119.3 树的遍历 53219.3.1 前序遍历 53219.3.2 中序遍历 53319.3.3 后序遍历 53319.3.4 层序遍历 53419.4 二叉树ADT 53419.5 使用二叉树:表达式树 53719.6 背痛分析仪 54719.7 使用链表实现二叉树 55219.7.1 find方法 55619.7.2 iteratorInOrder方法 557重要概念总结 558术语总结 558自测题 559练习题 560程序设计项目 560自测题答案 561第20章 二叉搜索树 56220.1 二叉搜索树概述 56220.1.1 向二叉搜索树添加元素 56320.1.2 删除二叉搜索树中的元素 56420.2 实现二叉搜索树 56620.3 用链表实现二叉搜索树 56820.3.1 addElement操作 56920.3.2 removeElement操作 57120.3.3 removeAllOccurrences操作 57320.3.4 removeMin操作 57420.3.5 用数组实现二叉搜索树 57520.4 使用二叉搜索树实现有序列表 57520.4.1 BinarySearchTreeList实现分析 57820.5 平衡二叉搜索树 57920.5.1 右旋 58020.5.2 左旋 58020.5.3 右左旋 58120.5.4 左右旋 58120.6 实现二叉搜索树:AVL树 58220.6.1 AVL树的右旋 58220.6.2 AVL树中的左旋 58320.6.3 AVL树中的右左旋 58320.6.4 AVL树中的左右旋 58320.7 实现二叉搜索树:红/黑树 58420.7.1 红/黑树中的插入元素 58520.7.2 从红/黑树中删除元素 587重要概念总结 589术语总结 589自测题 590练习题 590程序设计项目 591自测题答案 591第21章 堆与优先队列 59321.1 堆 59321.1.1 addElement操作 59521.1.2 removeMin操作 59621.1.3 findMin 操作 59721.2 堆的应用:优先级队列 59721.3 用链表实现堆 60021.3.1 addElement 操作 60121.3.2 removeMin操作 60421.3.3 findMin操作 60621.4 用数组实现堆 60621.4.1 addElement操作 60821.4.2 removeMin操作 60921.4.3 findMin操作 61121.5 堆的应用:堆排序 611重要概念总结 612术语总结 613自测题 613练习题 614程序设计项目 614自测题答案 615第22章 集与映射 61622.1 集与映射集合 61622.2 Java API中的集与映射 61722.3 Set的应用:域拦截器 61922.4 Map的应用:产品销售 62122.5 Map的应用:用户管理 62522.6 使用树实现Set和Map 62922.7 使用散列实现Set和Map 629重要概念总结 631术语总结 632自测题 632练习题 632程序设计项目 633自测题答案 633第23章 多路搜索树 63423.1 组合树的概念 63423.2 2-3树 63423.2.1 将元素插入2-3树 63523.2.2 从2-3树中删除元素 63723.3 2-4树 63923.4 B-树 64023.4.1 B*-树 64223.4.2 B -树 64223.4.3 B-树分析 64223.5 B-树的实现策略 643重要概念总结 643术语总结 644自测题 644练习题 645程序设计项目 645自测题答案 645第24章 图 64724.1 无向图 64724.2 有向图 64924.3 网络 65024.4 常用的图算法 65124.4.1 遍历 65124.4.2 测试连通性 65424.4.3 最小生成树 65524.4.4 确定最短路径 65824.5 实现图的策略 65824.5.1 邻接表 65924.5.2 邻接矩阵 65924.6 用邻接矩阵实现无向图 66024.6.1 addEdge方法 66324.6.2 addVertex方法 66424.6.3 expandCapacity方法 66524.6.4 其他方法 665重要概念总结 665术语总结 666自测题 666练习题 667程序设计项目 667自测题答案 668第25章 数据库 66925.1 数据库简介 66925.2 建立与数据库的连接 67125.2.1 获取数据库驱动程序 67125.3 创建与更改数据库表 67325.3.1 创建表 67325.3.2 更改表 67425.3.3 删除列 67525.4 查询数据库 67525.4.1 显示列 67625.5 数据的插入、浏览与更新 67725.5.1 插入 67825.5.2 SELECT-FROM 67925.5.3 更新 68325.6 删除数据和数据库表 68425.6.1 删除数据 68425.6.2 删除数据库表 684重要概念总结 685自测题 685练习题 685程序设计项目 686自测题答案 687第26章 JavaFX 68826.1 JavaFX简介 68826.2 JavaFX的Hello World程序 68926.3 使用JavaFX Scene Builder 69126.3.1 创建应用程序项目 69226.3.2 浏览项目文件 69326.3.3 使用JavaFX SceneBuilder修改GUI 69526.4 JavaFX中的事件处理 696重要概念总结 700自测题 700程序设计项目 700自测题答案 701附录A 词汇表 702附录B 数系 725B.1 位值 725B.2 基数大于10 726B.3 转换 728B.4 快捷转换 729练习题 730附录C Unicode字符集 733附录D Java运算符 735附录E Java修饰符 739附录F Java图形 741F.1 坐标系 741F.2 表示颜色 741F.3 绘图 742F.4 多边形和折线 749F.5 Polygon类 751练习 752程序设计项目 752附录G Java小程序 754G.1 在HTML中嵌入Applet 755G.2 更多的Applet方法 756G.3 小程序中的GUI 759程序设计项目 765附录H 正则表达式 766附录I 散列 767I.1 散列概述 767I.2 散列函数 769I.2.1 除留余数法 769I.2.2 折叠法 769I.2.3 平方取中法 770I.2.4 基数转换法 770I.2.5 数字分析法 770I.2.6 长度依赖法 771I.2.7 Java语言中的散列函数 771I.3 解决冲突 771I.3.1 链接法 771I.3.2 开放寻址法 773I.4 删除散列表元素 775I.4.1 从链接实现中删除元素 775I.4.2 从开放寻址实现中删除 776I.5 Java Collections API中的散列表 776I.5.1 Hashtable类 777I.5.2 HashSet类 778I.5.3 HashMap类 779I.5.4 IdentityHashMap类 780I.5.5 WeakHashMap类 781I.5.6 LinkedHashSet和LinkedHashMap 782重要概念 783自测题 783练习 784程序设计项目 784自测题答案 785
Java程序设计与数据结构(第4版) pdf下载声明
本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版