![]() ![]() |
Java程序设计与问题求解(原书第8版)
本书不仅介绍Java语言的基础语法知识,还通过大量案例研究、编程示例,着重讲授问题求解和编程技术,如程序控制流(分支和循环)、定义类与方法、异常处理等。
出版者的话
译者序 前言 致谢 依赖关系图 第1章 计算机与Java引论 1 1.1 计算机基础 1 1.1.1 硬件与内存 2 1.1.2 程序 3 1.1.3 编程语言、编译器和解释器 4 1.1.4 Java字节码 5 1.1.5 类加载器 7 1.2 浅尝Java 8 1.2.1 Java语言的历史 8 1.2.2 应用程序与小应用程序 9 1.2.3 第一个Java应用程序 9 1.2.4 编写、编译和运行Java程序 13 1.3 编程基础 14 1.3.1 面向对象编程 14 1.3.2 算法 17 1.3.3 测试与调试 18 1.3.4 软件复用 19 1.4 图形化编程补充读物 20 1.4.1 一个JavaFX应用程序样例 21 1.4.2 图形的尺寸和位置 23 1.4.3 绘制椭圆和圆 24 1.4.4 绘制弧 25 本章小结 27 练习 28 实践程序 29 编程项目 29 自测问题答案 30 第2章 基本的计算 33 2.1 变量和表达式 33 2.1.1 变量 33 2.1.2 数据类型 35 2.1.3 Java标识符 37 2.1.4 赋值语句 38 2.1.5 简单输入 40 2.1.6 简单屏幕输出 41 2.1.7 常量 42 2.1.8 具名常量 43 2.1.9 赋值兼容性 44 2.1.10 类型强制转换 45 2.1.11 算术运算 48 2.1.12 括号和优先级规则 50 2.1.13 特殊赋值操作符 51 2.1.14 案例研究:售货机找零 52 2.1.15 递增和递减操作符 56 2.1.16 更多有关递增和递减操作符的讨论 57 2.2 String类 57 2.2.1 字符串常量和变量 58 2.2.2 字符串连接 58 2.2.3 字符串方法 59 2.2.4 字符串处理 62 2.2.5 转义字符 63 2.2.6 Unicode字符集 64 2.3 键盘和屏幕I/O 65 2.3.1 屏幕输出 65 2.3.2 键盘输入 67 2.3.3 其他输入界定符(选修) 72 2.3.4 使用printf的格式化输出(选修) 73 2.4 文档和样式 75 2.4.1 有意义的变量名 75 2.4.2 注释 75 2.4.3 缩进 77 2.4.4 使用具名常量 78 2.5 图形化编程补充读物 80 2.5.1 将样式规则应用于JavaFX应用程序 80 2.5.2 介绍JOptionPane类 81 2.5.3 将输入作为其他数字类型读取 87 2.5.4 编程示例:具有窗口化I/O的找零程序 88 本章小结 90 练习 90 实践程序 92 编程项目 93 自测问题答案 94 第3章 流控制—分支 98 3.1 if-else语句 98 3.1.1 基本的if-else语句 98 3.1.2 布尔表达式 104 3.1.3 比较字符串 107 3.1.4 嵌套的if-else语句 111 3.1.5 多重分支的if-else语句 112 3.1.6 编程示例:给出字母等第 114 3.1.7 案例研究:体重指数 116 3.1.8 条件操作符(选修) 118 3.1.9 exit方法 119 3.2 boolean类型 120 3.2.1 布尔变量 120 3.2.2 优先级规则 121 3.2.3 布尔值的输入和输出 123 3.3 switch语句 124 3.4 图形化编程补充读物 130 3.4.1 指定绘图颜色 131 3.4.2 Yes或No问题的对话框 134 本章小结 135 练习 136 实践程序 137 编程项目 138 自测问题答案 140 第4章 流控制—循环 142 4.1 Java循环语句 142 4.1.1 while语句 143 4.1.2 do-while语句 146 4.1.3 编程示例:臭虫侵扰 149 4.1.4 编程示例:嵌套循环 154 4.1.5 for语句 155 4.1.6 在for语句中声明变量 160 4.1.7 在for语句中使用逗号(选修) 160 4.1.8 for-each语句 162 4.2 用循环编程 162 4.2.1 循环体 162 4.2.2 初始化语句 163 4.2.3 控制循环迭代次数 164 4.2.4 案例研究:使用布尔变量来终止循环 166 4.2.5 编程示例:消费热潮 168 4.2.6 循环中的break语句和continue语句(选修) 170 4.2.7 循环缺陷 172 4.2.8 跟踪变量 174 4.2.9 断言检查 175 4.3 图形化编程补充读物 177 4.3.1 编程示例:一个包含多张脸的JavaFX应用程序 177 4.3.2 绘制文本 181 本章小结 182 练习 182 实践程序 184 编程项目 185 自测问题答案 188 第5章 定义类和方法 193 5.1 类和方法定义 193 5.1.1 类文件和单独编译 195 5.1.2 编程示例:实现Dog类 195 5.1.3 实例变量 196 5.1.4 方法 198 5.1.5 定义void方法 200 5.1.6 定义有返回值的方法 201 5.1.7 编程示例:实现Species类的第一次尝试 205 5.1.8 关键词this 208 5.1.9 局部变量 209 5.1.10 块 211 5.1.11 基本类型参数 212 5.2 信息隐藏和封装 216 5.2.1 信息隐藏 217 5.2.2 前置条件和后置条件注释 217 5.2.3 public和private修饰符 218 5.2.4 编程示例:为什么实例变量应该是私有的 220 5.2.5 编程示例:矩形类的另一种实现 221 5.2.6 访问器方法和修改器方法 223 5.2.7 编程示例:Purchase类 225 5.2.8 调用方法的方法 228 5.2.9 封装 233 5.2.10 使用javadoc自动归档 235 5.2.11 UML类图 235 5.3 对象和引用 236 5.3.1 类类型变量 237 5.3.2 定义类的equals方法 242 5.3.3 编程示例:Species类 244 5.3.4 布尔值方法 246 5.3.5 案例研究:单元测试 247 5.3.6 类类型参数 249 5.3.7 编程示例:类类型参数与基本类型参数 252 5.4 图形化编程补充读物 255 5.4.1 GraphicsContext类 255 5.4.2 编程示例:用辅助方法绘制多张脸 257 5.4.3 向JavaFX应用程序添加标签 260 本章小结 261 练习 262 实践程序 264 编程项目 265 自测问题答案 269 第6章 对象和方法进阶 274 6.1 构造器 275 6.1.1 定义构造器 275 6.1.2 在构造器中调用方法 281 6.1.3 在构造器中调用其他构造器(选修) 284 6.2 静态变量和静态方法 285 6.2.1 静态变量 285 6.2.2 静态方法 286 6.2.3 将main方法中的任务划分为子任务 291 6.2.4 在类中添加main方法 293 6.2.5 Math类 294 6.2.6 包装器类 296 6.3 编写方法 300 6.3.1 案例研究:格式化输出 300 6.3.2 分解 305 6.3.3 解决编译器问题 305 6.3.4 测试方法 307 6.4 重载 309 6.4.1 重载基础知识 309 6.4.2 重载和自动类型转换 311 6.4.3 重载和返回类型 313 6.4.4 编程示例:Money类 315 6.5 再探信息隐藏 320 6.6 作为类的枚举 323 6.7 包 325 6.7.1 包和导入机制 325 6.7.2 包名和目录 326 6.7.3 名字冲突 328 6.8 图形化编程补充读物 329 6.8.1 添加按钮 329 6.8.2 添加图标 330 本章小结 332 练习 332 实践程序 334 编程项目 335 自测问题答案 338 第7章 数组 343 7.1 数组基础 344 7.1.1 创建和访问数组 344 7.1.2 数组详情 346 7.1.3 实例变量length 349 7.1.4 进一步了解数组索引 351 7.1.5 初始化数组 354 7.2 类和方法中的数组 355 7.2.1 案例研究:销售报表 355 7.2.2 索引变量作为方法引元 362 7.2.3 整个数组作为方法引元 363 7.2.4 main方法的引元 365 7.2.5 数组赋值和判等 365 7.2.6 返回数组的方法 368 7.3 用数组和类编程 371 7.3.1 编程示例:专用列表类 371 7.3.2 部分填充的数组 377 7.4 数组排序和搜索 378 7.4.1 选择排序 378 7.4.2 其他排序算法 382 7.4.3 在数组中搜索 383 7.5 多维数组 383 7.5.1 多维数组基础知识 384 7.5.2 多维数组作为参数和返回值 386 7.5.3 多维数组的Java表示形式 388 7.5.4 参差数组(选修) 389 7.5.5 编程示例:工时记录 390 7.6 图形化编程补充读物 395 7.6.1 布局面板 395 7.6.2 文本域、文本框和组合布局 401 7.6.3 绘制多边形 404 本章小结 407 练习 407 实践程序 411 编程项目 412 自测问题答案 416 第8章 继承、多态和接口 422 8.1 继承基础 422 8.1.1 派生类 423 8.1.2 覆盖方法定义 426 8.1.3 覆盖与重载 427 8.1.4 final修饰符 427 8.1.5 基类的私有实例变量与私有方法 428 8.1.6 UML继承图 429 8.2 运用继承编程 431 8.2.1 派生类中的构造器 431 8.2.2 再论this方法 432 8.2.3 调用被覆盖的方法 433 8.2.4 编程示例:派生类的派生类 434 8.2.5 在Undergraduate中定义equals方法的另一种方式 437 8.2.6 类型兼容性 437 8.2.7 Object类 441 8.2.8 更好的equals方法 442 8.3 多态 444 8.3.1 动态绑定和继承 444 8.3.2 动态绑定toString 447 8.4 接口与抽象类 448 8.4.1 类接口 448 8.4.2 Java接口 449 8.4.3 实现接口 450 8.4.4 作为类型的接口 452 8.4.5 扩展接口 454 8.4.6 案例研究:字符图形 455 8.4.7 案例研究:Comparable接口 464 8.4.8 抽象类 468 8.5 图形化编程补充读物 469 8.5.1 事件驱动编程 470 8.5.2 在单独的类中处理事件 471 8.5.3 在主GUI应用类中处理事件 473 8.5.4 在匿名内部类中处理事件 475 8.5.5 编程示例:添加数字 477 本章小结 479 练习 479 实践程序 480 编程项目 481 自测问题答案 483 第9章 异常处理 486 9.1 基本的异常处理 486 9.1.1 Java中的异常 487 9.1.2 预定义的异常类 495 9.2 定义自己的异常类 496 9.3 更多有关异常类的知识 503 9.3.1 声明异常(传递责任) 504 9.3.2 异常的种类 506 9.3.3 错误 507 9.3.4 多个抛出和捕获 508 9.3.5 finally块 513 9.3.6 重新抛出异常(选修) 513 9.3.7 案例研究:面向命令行的计算器 514 9.4 图形化编程补充读物 523 9.4.1 更多的用户界面控件和形状 523 9.4.2 图像和形状 526 9.4.3 处理鼠标事件 527 9.4.4 Timeline类 530 本章小结 532 练习 533 实践程序 534 编程项目 536 自测问题答案 538 第10章 流、文件I/O和网络 542 10.1 流和文件I/O概览 542 10.1.1 流的概念 543 10.1.2 为什么用文件来进行输入/输出 543 10.1.3 文本文件和二进制文件 543 10.2 文本文件I/O 545 10.2.1 创建文本文件 545 10.2.2 在文本文件中追加内容 550 10.2.3 从文本文件中读取内容 551 10.3 适用于所有文件的技术 553 10.3.1 File类 553 10.3.2 编程示例:从键盘读取文件名 554 10.3.3 使用路径名 555 10.3.4 File类的方法 556 10.3.5 定义方法来打开流 558 10.3.6 案例研究:处理由逗号分隔的数值文件 559 10.4 基本的二进制文件I/O 561 10.4.1 创建二进制文件 561 10.4.2 向二进制文件中写入基本类型值 563 10.4.3 向二进制文件中写入字符串 565 10.4.4 有关writeUTF的一些细节 566 10.4.5 从二进制文件中读取内容 566 10.4.6 EOFException类 570 10.4.7 编程示例:处理二进制数据文件 572 10.5 包含对象和数组的二进制文件I/O 576 10.5.1 包含类的对象的二进制文件I/O 576 10.5.2 序列化的一些细节 579 10.5.3 二进制文件中的数组对象 580 10.6 使用流的网络通信 582 10.7 图形化编程补充读物 586 本章小结 591 练习 591 实践程序 593 编程项目 594 自测问题答案 597 第11章 递归 601 11.1 递归基础 601 11.1.1 案例研究:数字位显示成单词 603 11.1.2 递归如何工作 607 11.1.3 无限递归 610 11.1.4 递归方法与迭代方法 612 11.1.5 有返回值的递归方法 614 11.2 运用递归编程 617 11.2.1 编程示例:要求用户输入必须正确 617 11.2.2 案例研究:二分搜索 618 11.2.3 编程示例:归并排序—一种递归排序方法 624 11.3 图形化编程补充读物 627 本章小结 630 练习 630 实践程序 632 编程项目 632 自测问题答案 636 第12章 动态数据结构和泛型 639 12.1 基于数组的数据结构 640 12.1.1 ArrayList类 640 12.1.2 创建ArrayList的实例 641 12.1.3 使用ArrayList的方法 642 12.1.4 编程示例:待办事项列表 645 12.1.5 参数化类和泛化数据类型 647 12.2 Java集合框架 648 12.2.1 Collection接口 648 12.2.2 HashSet类 649 12.2.3 Map接口 650 12.2.4 HashMap类 650 12.3 链式数据结构 653 12.3.1 LinkedList类 653 12.3.2 链表 653 12.3.3 实现链表的操作 655 12.3.4 隐私泄露 660 12.3.5 内部类 661 12.3.6 节点内部类 662 12.3.7 迭代器 662 12.3.8 Java的Iterator接口 670 12.3.9 链表的异常处理 671 12.3.10 链表的变体 673 12.3.11 其他链式数据结构 675 12.4 泛型 675 12.4.1 基础知识 675 12.4.2 编程示例:一个泛化的链表 678 12.5 图形化编程补充读物 682 12.5.1 用场景构建器构建JavaFX应用程序 682 12.5.2 何去何从 686 本章小结 686 练习 687 实践程序 689 编程项目 690 自测问题答案 693 附录A 获取Java 696 附录B 运行Applet 697 附录C protected和包修饰符 698 附录D DecimalFormat类 699 附录E javadoc 702 附录F C++和Java之间的区别 704 附录G Unicode字符编码 707 附录H Java 8函数式编程简介 708 附录I ??Iterator接口 712 附录J 克隆 713 附录K Java保留关键词 716 索引一
你还可能感兴趣
我要评论
|