《JAVA程序设计教程 原书第3版》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:(美)STUARTREGES,MARTYSTEPP著;陈志等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2015
  • ISBN:9787111489900
  • 页数:667 页
图书介绍:本书采用从基础开始的讲法,先介绍面向过程的程序设计方法,打下牢固的编程基础后,再讲述面向对象的程序设计方法。主要内容包括:程序设计基础、数组、定义类、递归、继承和接口、图形用户接口、排序和查找、集合等,本书在大部分章节都配有练习题,对理解和消化书中的概念极有帮助,适合学生和初学者自学参考。

第1章 Java编程简介 1

1.1 计算的基本概念 1

1.1.1 为什么要编程 1

1.1.2 硬件和软件 2

1.1.3 数字王国 2

1.1.4 程序设计的过程 4

1.1.5 为什么选择Java 5

1.1.6 Java编程环境 5

1.2 现在开始介绍Java 6

1.2.1 字符串常量 9

1.2.2 System.out.println 9

1.2.3 转义序列 10

1.2.4 print和println 10

1.2.5 标识符和关键字 12

1.2.6 一个复杂的例子:DrawFigures1 13

1.2.7 注释与程序可读性 14

1.3 程序中的错误 16

1.3.1 语法错误 16

1.3.2 逻辑错误 18

1.4 过程分解 18

1.4.1 静态方法 20

1.4.2 控制流程 22

1.4.3 调用其他方法的方法 24

1.4.4 运行时错误举例 26

1.5 案例分析:输出图形 27

1.5.1 结构化的版本 27

1.5.2 无冗余的最终版本 28

1.5.3 执行流程的分析 30

本章小结 31

第2章 基本数据类型和确定循环 32

2.1 数据的基本概念 32

2.1.1 基本类型 32

2.1.2 表达式 33

2.1.3 常值 34

2.1.4 算术运算符 35

2.1.5 优先级 36

2.1.6 类型混用和类型转换 38

2.2 变量 39

2.2.1 赋值和声明变量 42

2.2.2 字符串连接 44

2.2.3 增量和减量运算符 46

2.2.4 变量和混合类型 47

2.3 for循环 49

2.3.1 跟踪for循环 50

2.3.2 for循环模式 52

2.3.3 循环嵌套 53

2.4 复杂性管理 55

2.4.1 作用域 55

2.4.2 伪代码 59

2.4.3 类常量 61

2.5 案例分析:输出复杂的图形 63

2.5.1 问题分解和伪代码 63

2.5.2 第一个结构化版本 64

2.5.3 增加一个类常量 66

2.5.4 进一步修改 68

本章小结 69

第3章 参数和对象 70

3.1 参数 70

3.1.1 参数的机制 72

3.1.2 参数的限制 75

3.1.3 多重参数 77

3.1.4 参数和常量 79

3.1.5 方法重载 79

3.2 具有返回值的方法 80

3.2.1 Math类 81

3.2.2 编写具有返回值的方法 83

3.3 使用对象 85

3.3.1 String对象 86

3.3.2 交互式程序和Scanner对象 90

3.3.3 交互式程序示例 92

3.4 案例分析:抛物线轨迹 93

3.4.1 非结构化解决方案 96

3.4.2 结构化解决方案 98

本章小结 100

第3G章 图形(选学) 101

3G.1 图形简介 101

3G.1.1 DrawingPanel 101

3G.1.2 绘制线段和图形 102

3G.1.3 颜色 105

3G.1.4 循环绘图 106

3G.1.5 文本和字体 108

3G.2 图形处理中的过程分解 110

3G.3 案例分析:金字塔 113

3G.3.1 非结构的部分解决方案 113

3G.3.2 绘制金字塔的通用方法 114

3G.3.3 完全的结构化解决方案 116

本章小结 117

第4章 条件执行 118

4.1 if/else语句 118

4.1.1 关系运算符 119

4.1.2 嵌套if/else语句 120

4.1.3 对象的相等性 125

4.1.4 构造if/else语句 126

4.1.5 多重条件测试 127

4.2 积累式算法 128

4.2.1 累加和 128

4.2.2 最小/最大循环 130

4.2.3 使用if计算累加和 133

4.2.4 截断错误 134

4.3 文本处理 136

4.3.1 char类型 137

4.3.2 char与int 137

4.3.3 积累式文本处理算法 138

4.3.4 System.out.printf 139

4.4 条件执行的方法 142

4.4.1 前提条件和后置条件 142

4.4.2 抛出异常 143

4.4.3 重温返回值 145

4.4.4 推敲执行路径 148

4.5 案例分析:计算健康指数 150

4.5.1 单人版无结构化解决方案 151

4.5.2 两人版无结构化解决方案 153

4.5.3 两人版结构化解决方案 155

4.5.4 面向过程的程序设计原则 158

本章小结 161

第5章 程序逻辑和不确定循环 162

5.1 while循环 162

5.1.1 寻找最小约数的循环 163

5.1.2 随机数字 165

5.1.3 计算机模拟技术 168

5.1.4 do/while循环 169

5.2 篱笆桩算法 170

5.2.1 哨兵循环 171

5.2.2 使用if语句处理篱笆桩 172

5.3 布尔类型 174

5.3.1 逻辑运算符 175

5.3.2 短路特性 176

5.3.3 boolean变量和标志 180

5.3.4 boolean的禅意 181

5.3.5 布尔表达式的非运算 183

5.4 用户错误 184

5.4.1 初识Scanner对象 184

5.4.2 处理用户错误 186

5.5 断言和程序逻辑 187

5.5.1 分析断言 188

5.5.2 断言举例 190

5.6 案例分析:猜数字 192

5.6.1 无提示的初始版本 192

5.6.2 带有提示的随机版本 194

5.6.3 健壮的最终版本 197

本章小结 199

第6章 文件处理 201

6.1 读取文件的基本方法 201

6.1.1 随处可见的数据 201

6.1.2 文件与文件对象 202

6.1.3 使用Scanner对象读取文件内容 203

6.2 基于标记的文件处理 206

6.2.1 文件的结构和处理输入 208

6.2.2 Scanner对象的参数 211

6.2.3 路径和目录 212

6.2.4 一个更复杂的输入文件 214

6.3 基于行的处理 215

6.4 高级文件处理 220

6.4.1 使用PrintStream输出文件内容 220

6.4.2 保证文件可读 224

6.5 案例分析:邮政编码查询 225

本章小结 231

第7章 数组 232

7.1 数组的基本概念 232

7.1.1 创建并遍历数组 232

7.1.2 访问数组 235

7.1.3 一个使用数组的完整程序 237

7.1.4 随机访问 240

7.1.5 数组与方法 241

7.1.6 for-each循环 244

7.1.7 数组初始化 245

7.1.8 Arrays类 246

7.2 数组遍历算法 247

7.2.1 打印数组 247

7.2.2 查询与替换 249

7.2.3 判断相等性 251

7.2.4 逆序数组 252

7.2.5 字符串遍历算法 255

7.3 引用语义 256

7.4 高级数组技术 259

7.4.1 移动数组中的元素 259

7.4.2 对象数组 262

7.4.3 命令行参数 263

7.4.4 嵌套循环算法 263

7.5 多维数组 265

7.5.1 规则的二维数组 265

7.5.2 锯齿状二维数组 266

7.6 案例分析:本福德定律 270

7.6.1 计数器 270

7.6.2 完整的程序 273

本章小结 277

第8章 类 279

8.1 面向对象程序设计的基本概念 279

8.1.1 类和对象 280

8.1.2 Point对象 281

8.2 对象的状态与行为 282

8.2.1 对象的状态:字段 282

8.2.2 对象的行为:方法 284

8.2.3 隐含的参数 286

8.2.4 修改器和访问器 287

8.2.5 toString方法 289

8.3 对象的初始化:构造函数 290

8.3.1 关键字this 293

8.3.2 多个构造函数 295

8.4 封装 296

8.4.1 私有成员 296

8.4.2 类的不变式 301

8.4.3 改变类的内部实现 303

8.5 案例分析:设计一个表示股票信息的类 305

8.5.1 面向对象程序设计讨论 305

8.5.2 Stock类的字段和方法声明 307

8.5.3 Stock类的构造函数和实例方法的实现 308

本章小结 311

第9章 继承和接口 313

9.1 继承的基本概念 313

9.1.1 程序设计之外的层次结构 314

9.1.2 扩展类 315

9.1.3 重写方法 318

9.2 与父类交互 320

9.2.1 调用重写的方法 320

9.2.2 访问继承的字段 320

9.2.3 调用父类的构造函数 322

9.2.4 DividendStock类的行为 323

9.2.5 Object类 325

9.2.6 equals方法 326

9.2.7 instanceof关键字 328

9.3 多态性 329

9.3.1 多态机制 331

9.3.2 解析继承代码 333

9.3.3 解析复杂的调用关系 334

9.4 继承和设计 336

9.4.1 继承的误用 336

9.4.2 “是一个”和“有一个”关系 338

9.4.3 Graphics2D类 339

9.5 接口 340

9.5.1 形状类的接口 341

9.5.2 实现接口 342

9.5.3 接口的优点 344

9.6 案例分析:设计一组具有层次关系的金融类 346

9.6.1 设计类 346

9.6.2 初步实现 349

9.6.3 抽象类 352

本章小结 356

第10章 ArrayList 357

10.1 ArrayList 357

10.1.1 ArrayList的基本操作 358

10.1.2 ArrayList的查找方法 361

10.1.3 一个完整的ArrayList程序 363

10.1.4 向ArrayList添加或删除元素 364

10.1.5 使用for-each循环访问ArrayList 367

10.1.6 包装类 368

10.2 Comparable接口 370

10.2.1 自然排序和compareTo方法 372

10.2.2 实现Comparable接口 374

10.3 案例分析:词汇表比较 378

10.3.1 关于程序执行效率的考虑 379

10.3.2 版本1:计算词汇量 380

10.3.3 版本2:计算重叠部分 383

10.3.4 版本3:完整的程序 386

本章小结 390

第11章 Java的集合框架 391

11.1 列表 391

11.1.1 集合 391

11.1.2 LinkedList与ArrayList 392

11.1.3 迭代器 394

11.1.4 抽象数据类型 397

11.1.5 LinkedList类案例分析:筛法 398

11.2 数学集合 401

11.2.1 数学集合的概念 402

11.2.2 TreeSet与HashSet 403

11.2.3 数学集合上的运算 404

11.2.4 Set类案例分析:彩票机 406

11.3 映射 407

11.3.1 基本映射操作 408

11.3.2 映射视图(keySet和values) 409

11.3.3 TreeMap与HashMap 411

11.3.4 Map类案例分析:字数统计 411

11.3.5 集合综述 413

本章小结 414

第12章 递归 415

12.1 递归的思想 415

12.1.1 一个与编程无关的例子 415

12.1.2 将迭代方法改写为递归方法 417

12.1.3 递归方法的结构 419

12.2 一个更好的递归实例 420

12.3 递归函数和数据 428

12.3.1 整数的幂运算 428

12.3.2 求最大公约数 430

12.3.3 目录爬虫 434

12.3.4 助手方法 437

12.4 递归图形 439

12.5 递归回溯 442

12.5.1 一个简单的例子:移动路线问题 442

12.5.2 8皇后问题 445

12.5.3 数独问题 450

12.6 案例分析:求解前序表达式 453

12.6.1 中序、前序、后序表达式 453

12.6.2 计算前序表达式 454

12.6.3 完整的程序 456

本章小结 458

第13章 查找与排序 459

13.1 Java类库中的查找与排序 459

13.1.1 二分法查找 460

13.1.2 排序 462

13.1.3 洗牌 463

13.1.4 用比较器来自定义顺序 464

13.2 程序的复杂度 467

13.2.1 实验分析 469

13.2.2 算法的复杂度类型 471

13.3 查找和排序算法的实现 473

13.3.1 顺序查找 473

13.3.2 二分法查找 474

13.3.3 递归二分法查找 476

13.3.4 查找对象 479

13.3.5 选择排序 479

13.4 案例分析:归并排序算法的实现 482

13.4.1 分解与合并数组 482

13.4.2 递归的归并排序 484

13.4.3 完整的程序 487

本章小结 489

第14章 栈与队列 490

14.1 栈/队列基础 490

14.1.1 栈的概念 490

14.1.2 队列的概念 492

14.2 栈/队列常用操作 493

14.2.1 栈与队列互换 494

14.2.2 队列元素求和 495

14.2.3 栈元素求和 496

14.3 栈/队列高级操作 498

14.3.1 删除队列中的元素 498

14.3.2 比较两个栈 499

14.4 案例分析:表达式求值 501

14.4.1 标记分解 502

14.4.2 求值计算 505

本章小结 509

第15章 实现集合类 511

15.1 简单ArrayIntList类 511

15.1.1 添加数值和打印功能 511

15.1.2 关于封装的思考 515

15.1.3 处理列表的中间内容 516

15.1.4 引入另一个构造函数和常量 519

15.1.5 前提条件和后置条件 520

15.2 更完整的ArrayIntList类 523

15.2.1 抛出异常 523

15.2.2 方便的方法 525

15.3 高级功能 527

15.3.1 自动调整列表大小 527

15.3.2 添加迭代器 528

15.4 ArrayList<E>类 533

本章小结 536

第16章 链表 538

16.1 链表节点 538

16.1.1 创建链表 539

16.1.2 链表基础操作 541

16.1.3 操作节点 542

16.1.4 链表遍历 545

16.2 链表类 547

16.2.1 简单LinkedIntList类 547

16.2.2 追加新节点 549

16.2.3 操作中间节点 551

16.3 复杂的链表操作 557

16.4 IntList接口 561

16.5 LinkedList<E>类 564

16.5.1 链表的变体技术 564

16.5.2 链表的迭代器 566

16.5.3 其他代码细节 568

本章小结 570

第17章 二叉树 571

17.1 二叉树基础 571

17.2 遍历二叉树 574

17.3 树的常见操作 584

17.3.1 节点求和 584

17.3.2 计算树的层数 585

17.3.3 计算叶子节点数量 586

17.4 二叉搜索树 587

17.4.1 二叉搜索树性质 587

17.4.2 构建二叉搜索树 588

17.4.3 x=change(x)模式 591

17.4.4 在树中进行搜索 594

17.4.5 二叉搜索树的复杂性 597

17.5 SearchTree<E>类 597

本章小结 600

第18章 高级数据结构 602

18.1 散列技术 602

18.1.1 利用数组实现数学集合 602

18.1.2 散列函数和散列表 603

18.1.3 冲突 604

18.1.4 再散列 608

18.1.5 非整型数据的散列处理 610

18.1.6 HashMap的实现 612

18.2 优先级队列和堆 613

18.2.1 优先级队列 613

18.2.2 堆的概述 614

18.2.3 从堆中删除元素 615

18.2.4 向堆添加元素 616

18.2.5 利用数组实现堆 617

18.2.6 堆排序 620

本章小结 621

附录A Java总结 622

附录B Java API规范和Javadoc注释 631

附录C Java语法补充说明 635

索引 642