《Java面向对象程序设计 第2版》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)阿诺(Arnow,D.),(美)德克斯特(Doxter,S.),(美)韦斯(Weiss,G.)著;郑莉,张长富译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2006
  • ISBN:730213510X
  • 页数:569 页
图书介绍:本书重点介绍Java语言及其类库和变成的基本概念、技巧。

1.1 计算机与程序 1

1.2 程序与模型 1

第1章 进入Java 1

1.3.3 信息 3

1.3.2 行为 3

1.3 对象、类和消息 3

1.3.1 对象 3

1.3.6 预定义的对象和类 4

1.3.5 类 4

1.3.4 Java程序 4

1.5 发送一个消息到System.out对象 5

1.4 第一个对象 PrintStream对象 5

1.6 一个Java程序 7

1.7.3 关键字 8

1.7.2 标识符 8

1.7 Java小插曲 标识符、语句顺序、格式和注释 8

1.7.1 Java规则 8

1.7.7 包围的注释 9

1.7.6 注释 9

1.7.4 Java的语句顺序 9

1.7.5 程序格式和注释 9

1.8.1 可访问性 10

1.8 例行步骤 10

1.7.8 行注释 10

1.8.3 执行 11

1.8.2 准备执行:翻译 11

1.9 时刻 12

1.10 本章小结 13

1.11 关键术语 14

1.13 练习题 15

1.12 复习题 15

1.14 GUI补充 网页、HTML和小应用程序概述 16

2.2 使用PrintStream对象 22

2.1 简介 22

第2章 发送消息和执行操作 22

2.3 Java小插曲 引用、方法和消息 23

2.4 String类 24

2.3.3 再论标识符 24

2.3.1 方法的重载 24

2.3.2 消息发出后 24

2.6 引用变量 27

2.5 方法、参数以及返回值 27

2.7.1 变量 29

2.7 Java小插曲 变量和赋值 29

2.7.3 赋值语句不是等式 30

2.7.2 赋值 30

2.7.5 引用变量和对象 31

2.7.4 初始化 31

2.7.7 变量是独立的 32

2.7.6 微妙而重要的一点:变量的两种角色 32

2.7.10 变化 33

2.7.9 语句 33

2.7.8 常量不是变量 33

2.8 命令式程序设计 完成任务 34

2.8.1 整数类型和算术运算 35

2.8.2 基本的算术运算符 36

2.8.3 优先级 37

2.8.4 复合赋值运算符 38

2.8.5 自增/自减 39

2.8.6 操作的顺序 40

2.9 使用String方法 41

2.9.1 空串 44

2.10 命令式程序设计 简单的条件 47

2.9.2 灵活且实用的对象 47

2.10.1 if语句 48

2.10.2 条件 49

2.11 本章小结 51

2.12 关键术语 52

2.14 练习题 53

2.13 复习题 53

2.15 GUI补充内容 图形的绘制和定位 56

3.2.1 使用构造方法创建对象 64

3.2 创建对象 64

第3章 应用对象和基本类型 64

3.1 简介 64

3.3.2 对象来自于何处 65

3.3.1 重载的和默认的构造方法 65

3.2.2 引用变量的重要作用 65

3.3 Java小插曲 对象的来源 65

3.3.4 级联 66

3.3.3 不可变对象 66

3.3.5 组合 67

3.4.1 boolean值和变量 68

3.4 命令式程序设计 布尔类型 68

3.5 对象的应用 69

3.4.2 boolean表达式 69

3.6 日期和日历 70

3.7.2 混合类型算术运算 72

3.7.1 为什么我们还要用int 72

3.7 命令式程序设计 其他的整数类型 72

3.8 BigInteger 73

3.7.3 其他的整数类型:short和byte 73

3.10 输入简介 75

3.9 Java小插曲 包和import语句 75

3.10.1 文件输入概要:从磁盘到程序 76

3.11.1 类File:获取硬盘文件信息 77

3.11 文件输入过程 77

3.10.2 从字节到字符:Unicode的例子 77

3.10.3 从char到String:获得文本的行 77

3.11.3 类InputStreamReader:将byte转化成char 79

3.11.2 类FileInputStream:从磁盘文件中读取字节 79

3.11.5 结果:为输入打开一个文件 80

3.11.4 类BufferedReader:从char流到字符串 80

3.12 键盘输入 82

3.13 文件输出 84

3.14.1 网络的概念 85

3.14 网络计算简介 85

3.14.2 网络输入 86

3.15.4 寻找类String 88

3.15.3 文档页的层次 88

3.15 Java小插曲 Java文档 88

3.15.1 Java应用程序接口 88

3.15.2 API文档的内容 88

3.16 本章小结 90

3.18 复习题 91

3.17 关键术语 91

3.19 练习题 92

3.20 GUI补充材料 初识动画 94

4.2 类的定义 方法 98

4.1 简介 98

第4章 定义类 98

4.2.1 使用Logger类 101

4.3 类的定义 实例变量 102

4.2.2 基本的类的定义 102

4.3.1 使用Stopwatch类 105

4.4 关于方法的更多内容 返回值 106

4.3.2 使用实例变量 106

4.4.1 使用Counter类 108

4.4.2 返回值与输出:再谈Stopwatch 109

4.5 命令式编程 寻找最小值 110

4.4.3 使用返回值 110

4.6.2 return语句 112

4.6.1 声明顺序 112

4.6 Java小插曲 变量、声明以及return语句 112

4.6.3 变量及其生存期 113

4.7 关于方法的更多内容 形式参数 114

4.7.1 使用类Minimizer 116

4.8 状态和行为 117

4.7.2 使用参数 117

4.9.1 标识方法 118

4.9 类的定义 综合起来 118

4.9.2 确定状态 119

4.9.3 实现test() 120

4.9.4 实现其他方法 121

4.9.5 使用类TypingTutor 123

4.10.2 访问控制:public与private 125

4.10.1 形参 125

4.9.6 方法模式:get和set 125

4.10 Java小插曲 声明、访问和对象 125

4.10.4 对象及其生存期 126

4.10.3 对象访问自己的方法 126

4.12 关键术语 127

4.11 本章小结 127

4.14 练习题 128

4.13 复习题 128

4.15 GUI补充材料 一个简单的动画 130

5.1.1 TypingTutor类 137

5.1 定制新对象 构造方法 137

第5章 高级类定义 137

5.1.2 定义重载构造方法 139

5.2.2 构造方法和初始化 143

5.2.1 默认构造方法 143

5.2 Java小插曲 构造方法、初始化以及重载 143

5.3.1 确定行为 144

5.3 示例:Name类 144

5.2.3 重载 144

5.3.2 接口 145

5.3.3 Name类的实现 146

5.3.4 完整的Name类 149

5.3.6 输出对象:修改Name类 150

5.3.5 使用Name类 150

5.4 提供类的行为 152

5.5.1 回顾我们的第一个程序 155

5.5 Java小插曲 静态方法 155

5.5.2 预定义的静态方法 156

5.5.3 读取基本类型值 157

5.6 跟踪类范围内的信息 静态变量 158

5.7 定义常量:final 160

5.8.1 “句点”符号 161

5.8 Java小插曲 使用对象 161

5.8.3 关键字this 162

5.8.2 再谈访问控制 162

5.8.4 将对象表示为一个字符串 163

5.8.5 比较两个对象 164

5.9.2 在read()方法中使用null 167

5.9.1 Null值 167

5.9 重温输入方法 测试输入的结束 167

5.12 复习题 168

5.11 关键术语 168

5.10 本章小结 168

5.14 GUI补充材料 创建控制和交互 169

5.13 练习题 169

6.2.1 模拟度量的数值 176

6.2 一个进行米制转换的类 176

第6章 方法内核:命令式程序设计 176

6.1 概述 176

6.2.2 基本数据类型float和 double 177

6.2.3 实现convertFeetToMeters()方法 178

6.2.4 方法printtFeetToMeters Table():迭代 179

6.2.5 使用for来实现一个计数循环 180

6.3.2 float和double封装类 181

6.3.1 float和double的显示 181

6.3 Java小插曲 float、double以及for语句 181

6.3.5 什么时候使用float和double 182

6.3.4 使用float double 182

6.3.3 float double的字面值 182

6.4 π值的逼近 183

6.3.7 for语句的执行 183

6.3.6 混合类型算术 183

6.4.2 编写方法main() 185

6.4.1 模拟镖靶 185

6.4.3 实现Toss类 190

6.5.1 Car类 193

6.5 嵌套和复合的条件语句 193

6.4.4 使用MonteCarloPi类 193

6.5.2 实现chooseWarranty():多分支检测 194

6.5.3 复合条件 195

6.6.2 嵌套的if和悬空的else 196

6.6.1 逻辑运算符 196

6.6 Java小插曲 逻辑运算符和条件语句 196

6.6.3 条件语句格式之间的关系 197

6.6.4 Switch语句 198

6.7 本章小结 199

6.10 练习题 200

6.9 复习题 200

6.8 关键术语 200

6.11 GUI补充材料 关于交互的更多内容 202

7.3 重温Counter类 207

7.2 类设计概述 207

第7章 类设计 207

7.1 概述 207

7.4.2 一个示例 209

7.4.1 问题的描述 209

7.4 自动取款机 209

7.4.5 定义ATM类的接口 210

7.4.4 确定ATM类所需要的行为 210

7.4.3 寻找首要对象 210

7.4.7 实现ATM类的方法 211

7.4.6 定义ATM类的实例变量 211

7.4.9 定义Account类实例变量 212

7.4.8 确定Account类的行为和定义接口 212

7.4.11 确定并实现Account类的“辅助”方法 213

7.4.10 实现Account类的方法 213

7.4.12 完整地实现Account类 215

7.4.13 使用这些类 216

7.4.14 讨论 217

7.5.4 确定所求的行为动作—类RepairPerson 218

7.5.3 寻找首要对象 218

7.5 调度修理工人的例子 218

7.5.1 问题的描述 218

7.5.2 情景举例 218

7.5.5 定义类RepairPerson的接口 219

7.5.7 实现类RepairPerson的方法 220

7.5.6 定义类RepairPerson的实例变量 220

7.5.9 定义类Location的接口 222

7.5.8 确定类Location所需的行为动作 222

7.5.11 实现类Location的方法 223

7.5.10 定义类Location的实例变量 223

7.5.12 使用这些类 225

7.6 本章小结 226

7.9 练习题 227

7.8 复习题 227

7.7 关键术语 227

7.10 GUI补充材料 多个控件:布局以及事件处理 228

8.1 概述 245

第8章 验证对象的行为 245

8.2.1 编译时的语法和语义错误 246

8.2 错误的分类 246

8.2.3 逻辑错误 248

8.2.2 运行时错误 248

8.4 测试驱动 249

8.3 Java小插曲 Java的断言机制 249

8.5 自动测试 251

8.6.2 所有的行为都必须被测试 254

8.6.1 一个好的、完整的测试应该由什么组成 254

8.6 测试什么以及如何测试 254

8.6.4 确保每条语句至少被执行了一次 255

8.6.3 试着寻找逻辑测试顺序 255

8.6.6 寻找并测试特例 257

8.6.7 不要关心测试的效率 257

8.6.5 不同的测试中应该使用什么样的值 257

8.7.1 发现bug 258

8.7 调试的方法 258

8.8 本章小结 259

8.7.2 搜寻错误 259

8.10 复习题 260

8.9 关键术语 260

8.12 GUI补充材料 分离显示和控制 261

8.11 练习题 261

9.2 处理多个对象 272

9.1 简介 272

第9章 多个对象的处理 272

9.3 循环模式 275

9.4 循环在测试中的作用 276

9.5.2 情景示例 277

9.5.1 问题的描述 277

9.5 电话簿 277

9.5.7 方法的实现 278

9.5.6 定义实例变量 278

9.5.3 确定主要对象 278

9.5.4 确定所需要的行为 278

9.5.5 定义接口 278

9.5.9 定义Entry类的接口 280

9.5.8 确定Entry类希望的行为 280

9.5.13 讨论 281

9.5.12 使用Entry类的方法 281

9.5.10 定义Entry类的实例变量 281

9.5.11 实现Entry类的方法 281

9.6.1 再谈TelephoneBook 282

9.6 保存多个值 282

9.5.14 类开发过程的本质 282

9.7 Vector——一个简单的集合类 283

9.6.2 相关对象的集合 283

9.8 使用for循环来遍历Vector 284

9.9.3 实现方法 287

9.9.2 定义实例变量 287

9.9 再谈TelephoneBook类 287

9.9.1 一个更好的实现方法 287

9.10 Java小插曲 基本类型与集合:再谈封装类 288

9.9.4 讨论 288

9.11.1 问题的描述 289

9.11 一个例子——确定学生的相对表现 289

9.11.4 定义接口 290

9.11.3 行为的确定 290

9.11.2 确定主要对象 290

9.11.6 方法的实现 291

9.11.5 定义实例变量 291

9.11.7 类的使用 292

9.12 另一个Vector的应用 293

9.11.8 讨论 293

9.12.2 doOutput()方法 295

9.12.1 doExperiment()方法 295

9.13 Java小插曲 Object的方法 298

9.14 数组介绍 300

9.14.1 声明并创建数组 301

9.15.1 使用数组还是Vector 302

9.15 Vector和数组 302

9.14.2 数组元素 302

9.15.2 从Vector到数组 303

9.16 使用数组来处理抛掷硬币 304

9.18 关键术语 305

9.17 本章小结 305

9.20 练习题 306

9.19 复习题 306

9.21 GUI补充材料 文本的放置 307

10.2 设计循环 321

10.1 概述 321

第10章 设计迭代 321

10.2.3 代码框架 322

10.2.2 选择和定义变量 322

10.2.1 非正式过程 322

10.2.4 while条件 323

10.2.7 完成循环体 324

10.2.6 确保循环终止 324

10.2.5 初始化 324

10.2.9 讨论 325

10.2.8 重新检查初始化 325

10.3.2 for语句的灵活性 326

10.3.1 for等价于while 326

10.3 Java小插曲 两个循环语句 326

10.4.1 乘法 327

10.4 另一个简单例子 327

10.4.5 while条件 328

10.4.4 代码框架 328

10.4.2 非正式过程 328

10.4.3 选择和定义变量 328

10.4.7 确保终止 329

10.4.6 初始化 329

10.5 重新考察循环模式 330

10.4.10 讨论 330

10.4.8 完成循环体 330

10.4.9 重新检查初始化 330

10.5.1 遍历模式:查寻记录项 331

10.5.2 读/处理模式:修理工距离 333

10.6.1 统计30个街区内的修理工人数 336

10.6 修理工循环的变种 336

10.6.2 寻找最近的修理工 337

10.7 合计银行账号 338

10.8.2 循环模式:累计器 340

10.8.1 循环模式:计数器 340

10.8 更多循环模式:计数器、累计器与极值 340

10.8.3 循环模式:对象极值 341

10.8.4 循环模式:基本类型数据中的极值 342

10.9 遍历数组的迭代 343

10.10.1 短路 345

10.10 Java小插曲 短路、break和continue 345

10.10.2 break和continue语句 346

10.11 循环设计策略 精化不完美的解决方案 348

10.12 示例LOGO海龟 352

10.15 复习题 364

10.14 关键术语 364

10.13 本章小结 364

10.16 练习题 365

10.17 GUI补充材料 更多文本操作 367

11.2 搜索 381

11.1 概述 381

第11章 维护对象集合 381

11.3 二分搜索 385

11.4 寻找极值的下标 392

11.5 排序 394

11.6 搜索文件 399

11.7 线程 并行计算 403

11.7.1 引入Thread类 404

11.7.2 一个简单的线程示例 405

11.8 线程 并行文件搜索 407

11.9 本章小结 408

11.12 练习题 409

11.11 复习题 409

11.10 关键术语 409

11.13 GUI补充材料 线程 410

12.1 概述 420

第12章 扩展类的行为 420

12.2 扩展类——继承Ⅰ 421

12.3.5 定义接口 422

12.3.4 确定行为 422

12.3 一个更好的BufferedReader 422

12.3.1 问题陈述 422

12.3.2 情景 422

12.3.3 寻找主体 422

12.3.7 实现方法 423

12.3.6 定义实例变量 423

12.3.8 类的完整实现 424

12.5 回顾Name类——添加额外状态 426

12.4 为子类添加状态——访问父类状态 426

12.6.1 基本机制与术语 430

12.6 Java小插曲 继承 430

12.6.2 构造器 431

12.6.3 继承和is-a关系 432

12.6.5 继承与合成 433

12.6.4 protected关键字 433

12.6.7 常见错误 434

12.6.6 继承还是合成 434

12.6.9 Object类 435

12.6.8 类的层次结构 435

12.8.1 覆盖机制 436

12.8 Java小插曲 多态 436

12.7 覆盖方法 436

12.8.2 多态 437

12.8.3 覆盖与重载 438

12.9 抽取共同行为——继承Ⅱ 439

12.10 抽象方法和抽象类 442

12.11 规定公共行为——接口 444

12.12 一种通用排序算法 446

12.13 本章小结 449

12.14 关键术语 450

12.16 练习题 451

12.15 复习题 451

12.17 GUI补充材料 探究Java类层次结构中的抽象窗口工具箱(Abstract Window Toolkit) 452

13.2 遇到异常 460

13.1 预计异常 460

第13章 异常 460

13.2.1 抛出异常 461

13.3.2 Checked Exception与RuntimeException 463

13.3.1 标注异常 463

13.2.2 throws子句 463

13.3 Java小插曲 Exception类 463

13.4 处理异常 464

13.5 对异常的责任 468

13.6 异常并非总是错误 469

13.7 本章小结 470

13.10 练习题 471

13.9 复习题 471

13.8 关键术语 471

13.11 GUI补充材料 模型-视图-控制器(MVC)范式 472

14.1 概述 482

第14章 递归 482

14.2 示例 求幂 483

14.2.1 递归调用 484

14.3.1 读取数据来构造一个Repair Person对象的集合 485

14.3 如何设计递归方法 485

14. 2.2 结束 485

14.3.2 在集合中寻找最近的修理工 486

14.3.3 两种递归模式 487

14.4 递归方法——幕后探秘 488

14.5 在向量、数组和字符串中使用递归 492

14.6 排列 495

14.7.1 智力游戏 498

14.7 Hanoi塔 498

14.7.2 找出简单的方法 499

14.7.4 场景 502

14.7.3 问题阐述 502

14.7.5 实现方法 504

14.8 递归和迭代 510

14.9 本章小结 512

14.10 关键术语 512

14.11 复习题 513

14.12 练习题 513

14.13 GUI补充材料 Hanoi塔小应用程序 515

第15章 客户-服务器计算 533

15.1 客户端和服务器 533

15.2 Internet通信 533

15.2.1 套接字 534

15.2.2 TCPConnection类 535

15.3 客户-服务器计算 537

15.4 一些简单的客户端类 539

15.4.1 WebClient类 539

15.4.2 MailClient类 541

15.4.3 处理客户端异常 544

15.6 关键术语 547

15.7 复习题 547

15.5 本章小结 547

15.8 练习题 548

15.9 GUI补充材料 Swing 548

A.2 Macintosh环境 558

A.1 引言 558

A.3 UNIX/Linux环境 558

附录A 三个Java环境 558

A.4 Windows环境 559

B.2 使用AWIO进行输出 561

B.1 引言 561

B.2.1 AWPrinter类 561

附录B AWIO 561

B.2.2 什么东西会出错呢 562

B.3 使用AWIO进行键盘输入 563

B.4 交互式输入/输出 565

B.5 使用AWIO进行磁盘文件输入 565

B.6 在本书的其余部分使用AWIO 566

附录C 使用Enumeration遍历集合 568

C.1 遍历矢量——Enumeration 568

C.2 另一个循环模式——列举集合元素 569