图书目录

第1章进入Java1

1.1计算机与程序1

1.2程序与模型1

1.3对象、类和消息3

1.3.1对象3

1.3.2行为3

1.3.3信息3

1.3.4Java程序4

1.3.5类4

1.3.6预定义的对象和类4

1.4第一个对象PrintStream对象5

1.5发送一个消息到System.out

对象5

1.6一个Java程序7

1.7Java小插曲标识符、语句顺序、格

式和注释8

1.7.1Java规则8

1.7.2标识符8

1.7.3关键字8

1.7.4Java的语句顺序9

1.7.5程序格式和注释9

1.7.6注释9

1.7.7包围的注释9

1.7.8行注释10

1.8例行步骤10

1.8.1可访问性10

1.8.2准备执行:翻译11

1.8.3执行11

1.9时刻12

1.10本章小结13

1.11关键术语14

1.12复习题15

1.13练习题15

1.14GUI补充网页、HTML和小

应用程序概述16

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

2.1简介22

2.2使用PrintStream对象22

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

2.3.1方法的重载24

2.3.2消息发出后24

2.3.3再论标识符24

2.4String 类24

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

2.6引用变量27

2.7Java小插曲变量和赋值29

2.7.1变量29

2.7.2赋值30

2.7.3赋值语句不是等式30

2.7.4初始化31

2.7.5引用变量和对象31

2.7.6微妙而重要的一点:变量

的两种角色32

2.7.7变量是独立的32

2.7.8常量不是变量33

2.7.9语句33

2.7.10变化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.9.2灵活且实用的对象47

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

2.10.1if语句48

2.10.2条件49

2.11本章小结51

2.12关键术语52

2.13复习题53

2.14练习题53

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

定位56

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

3.1简介64

3.2创建对象64

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

3.2.2引用变量的重要作用65

3.3Java小插曲对象的来源65

3.3.1重载的和默认的构造

方法65

3.3.2对象来自于何处65

3.3.3不可变对象66

3.3.4级联66

3.3.5组合67

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

3.4.1boolean值和变量68

3.4.2boolean表达式69

3.5对象的应用69

3.6日期和日历70

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

类型72

3.7.1为什么我们还要用int72

3.7.2混合类型算术运算72

3.7.3其他的整数类型:short

和byte73

3.8BigInteger73

3.9Java小插曲包和import语句75

3.10输入简介75

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

程序76

3.10.2从字节到字符:Unicode

的例子77

3.10.3从char到String:获得文本

的行77

3.11文件输入过程77

3.11.1类File:获取硬盘文件

信息77

3.11.2类FileInputStream:从磁

盘文件中读取字节79

3.11.3类InputStreamReader:将

byte转化成char79

3.11.4类BufferedReader:从

char流到字符串80

3.11.5结果:为输入打开一个

文件80

3.12键盘输入82

3.13文件输出84

3.14网络计算简介85

3.14.1网络的概念85

3.14.2网络输入86

3.15Java小插曲Java文档88

3.15.1Java应用程序接口88

3.15.2API 文档的内容88

3.15.3文档页的层次88

3.15.4寻找类String88

3.16本章小结90

3.17关键术语91

3.18复习题91

3.19练习题92

3.20GUI补充材料初识动画94

第4章定义类98

4.1简介98

4.2类的定义方法98

4.2.1使用Logger类101

4.2.2基本的类的定义102

4.3类的定义实例变量102

4.3.1使用Stopwatch类105

4.3.2使用实例变量106

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

4.4.1使用Counter类108

4.4.2返回值与输出:再谈

Stopwatch109

4.4.3使用返回值110

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

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

语句112

4.6.1声明顺序112

4.6.2return语句112

4.6.3变量及其生存期113

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

参数114

4.7.1使用类Minimizer116

4.7.2使用参数117

4.8状态和行为117

4.9类的定义综合起来118

4.9.1标识方法118

4.9.2确定状态119

4.9.3实现test()120

4.9.4实现其他方法121

4.9.5使用类TypingTutor123

4.9.6方法模式:get和set125

4.10Java小插曲声明、访问和

对象125

4.10.1形参125

4.10.2访问控制:public 与 

private125

4.10.3对象访问自己的方法126

4.10.4对象及其生存期126

4.11本章小结127

4.12关键术语127

4.13复习题128

4.14练习题128

4.15GUI补充材料一个简单的

动画130

第5章高级类定义137

5.1定制新对象构造方法137

5.1.1TypingTutor类137

5.1.2定义重载构造方法139

5.2Java小插曲构造方法、初始化

以及重载143

5.2.1默认构造方法143

5.2.2构造方法和初始化143

5.2.3重载144

5.3示例:Name类144

5.3.1确定行为144

5.3.2接口145

5.3.3Name类的实现146

5.3.4完整的Name类149

5.3.5使用Name类150

5.3.6输出对象:修改

Name类150

5.4提供类的行为152

5.5Java小插曲静态方法155

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

5.5.2预定义的静态方法156

5.5.3读取基本类型值157

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

变量158

5.7定义常量:final160

5.8Java小插曲使用对象161

5.8.1“句点”符号161

5.8.2再谈访问控制162

5.8.3关键字this162

5.8.4将对象表示为一个字

符串163

5.8.5比较两个对象164

5.9重温输入方法测试输入的

结束167

5.9.1Null值167

5.9.2在read()方法中使

用null167

5.10本章小结168

5.11关键术语168

5.12复习题168

5.13练习题169

5.14GUI补充材料创建控制和

交互169

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

6.1概述176

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

6.2.1模拟度量的数值176

6.2.2基本数据类型float和

double177

6.2.3实现convertFeetToMeters()

方法178

6.2.4方法printFeetToMeters

Table():迭代179

6.2.5使用for来实现一个计数

循环180

6.3Java小插曲float、double以及for

语句181

6.3.1float和double的显示181

6.3.2float和double封装类181

6.3.3float和double的字

面值182

6.3.4使用float和double182

6.3.5什么时候使用float和

double182

6.3.6混合类型算术183

6.3.7for语句的执行183

6.4π值的逼近183

6.4.1模拟镖靶185

6.4.2编写方法main()185

6.4.3实现Toss类190

6.4.4使用MonteCarloPi类193

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

6.5.1Car类193

6.5.2实现chooseWarranty():多

分支检测194

6.5.3复合条件195

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

语句196

6.6.1逻辑运算符196

6.6.2嵌套的if和悬空

的else196

6.6.3条件语句格式之间的

关系197

6.6.4Switch语句198

6.7本章小结199

6.8关键术语200

6.9复习题200

6.10练习题200

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

内容202

第7章类设计207

7.1概述207

7.2类设计概述207

7.3重温Counter类207

7.4自动取款机209

7.4.1问题的描述209

7.4.2一个示例209

7.4.3寻找首要对象210

7.4.4确定ATM类所需要的

行为210

7.4.5定义ATM类的接口210

7.4.6定义ATM类的实例

变量211

7.4.7实现ATM类的方法211

7.4.8确定Account类的行为和

定义接口212

7.4.9定义Account类实例

变量212

7.4.10实现Account类的

方法213

7.4.11确定并实现Account类

的“辅助”方法213

7.4.12完整地实现

Account类215

7.4.13使用这些类216

7.4.14讨论217

7.5调度修理工人的例子218

7.5.1问题的描述218

7.5.2情景举例218

7.5.3寻找首要对象218

7.5.4确定所求的行为动作--

类RepairPerson218

7.5.5定义类RepairPerson的

接口219

7.5.6定义类RepairPerson的实例

变量220

7.5.7实现类RepairPerson的

方法220

7.5.8确定类Location所需的行为

动作222

7.5.9定义类Location的

接口222

7.5.10定义类Location的实例

变量223

7.5.11实现类Location的

方法223

7.5.12使用这些类225

7.6本章小结226

7.7关键术语227

7.8复习题227

7.9练习题227

7.10GUI补充材料多个控件:布局

以及事件处理228

第8章验证对象的行为245

8.1概述245

8.2错误的分类246

8.2.1编译时的语法和语义

错误246

8.2.2运行时错误248

8.2.3逻辑错误248

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

8.4测试驱动249

8.5自动测试251

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

8.6.1一个好的、完整的测试应该

由什么组成254

8.6.2所有的行为都必须被

测试254

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

8.6.4确保每条语句至少被执行

了一次255

8.6.5不同的测试中应该使用

什么样的值257

8.6.6寻找并测试特例257

8.6.7不要关心测试的效率257

8.7调试的方法258

8.7.1发现bug258

8.7.2搜寻错误259

8.8本章小结259

8.9关键术语260

8.10复习题260

8.11练习题261

8.12GUI补充材料分离显示和

控制261

第9章多个对象的处理272

9.1简介272

9.2处理多个对象272

9.3循环模式275

9.4循环在测试中的作用276

9.5电话簿277

9.5.1问题的描述277

9.5.2情景示例277

9.5.3确定主要对象278

9.5.4确定所需要的行为278

9.5.5定义接口278

9.5.6定义实例变量278

9.5.7方法的实现278

9.5.8确定Entry类希望的

行为280

9.5.9定义Entry类的接口280

9.5.10定义Entry类的实例

变量281

9.5.11实现Entry类的方法281

9.5.12使用Entry类的方法281

9.5.13讨论281

9.5.14类开发过程的本质282

9.6保存多个值282

9.6.1再谈TelephoneBook282

9.6.2相关对象的集合283

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

9.8使用for循环来遍历Vector284

9.9再谈TelephoneBook类287

9.9.1一个更好的实现方法287

9.9.2定义实例变量287

9.9.3实现方法287

9.9.4讨论288

9.10Java小插曲基本类型与集

合:再谈封装类288

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

表现289

9.11.1问题的描述289

9.11.2确定主要对象290

9.11.3行为的确定290

9.11.4定义接口290

9.11.5定义实例变量291

9.11.6方法的实现291

9.11.7类的使用292

9.11.8讨论293

9.12另一个Vector的应用293

9.12.1doExperiment()方法295

9.12.2doOutput()方法295

9.13Java小插曲Object的方法298

9.14数组介绍300

9.14.1声明并创建数组301

9.14.2数组元素302

9.15Vector和数组302

·ⅩⅧ·9.15.1使用数组还是

Vector302

9.15.2从Vector到数组303

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

9.17本章小结305

9.18关键术语305

9.19复习题306

9.20练习题306

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

第10章设计迭代321

10.1概述321

10.2设计循环321

10.2.1非正式过程322

10.2.2选择和定义变量322

10.2.3代码框架322

10.2.4while条件323

10.2.5初始化324

10.2.6确保循环终止324

10.2.7完成循环体324

10.2.8重新检查初始化325

10.2.9讨论325

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

10.3.1for等价于while326

10.3.2for语句的灵活性326

10.4另一个简单例子327

10.4.1乘法327

10.4.2非正式过程328

10.4.3选择和定义变量328

10.4.4代码框架328

10.4.5while条件328

10.4.6初始化329

10.4.7确保终止329

10.4.8完成循环体330

10.4.9重新检查初始化330

10.4.10讨论330

10.5重新考察循环模式330

10.5.1遍历模式:查寻记

录项331

10.5.2读/处理模式:修理工

距离333

10.6修理工循环的变种336

10.6.1统计30个街区内的修

理工人数336

10.6.2寻找最近的修理工337

10.7合计银行账号338

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

极值340

10.8.1循环模式:计数器340

10.8.2循环模式:累计器340

10.8.3循环模式:对象极值341

10.8.4循环模式:基本类型数

据中的极值342

10.9遍历数组的迭代343

10.10Java 小插曲短路、break和

continue345

10.10.1短路345

10.10.2break和continue

语句346

10.11循环设计策略精化不完美的

解决方案348

10.12示例LOGO海龟352

10.13本章小结364

10.14关键术语364

10.15复习题364

10.16练习题365

10.17GUI补充材料更多文本

操作367

第11章维护对象集合381

11.1概述381

11.2搜索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.10关键术语409

11.11复习题409

11.12练习题409

11.13GUI补充材料线程410

第12章扩展类的行为420

12.1概述420·XVⅣ·

12.2扩展类——继承 Ⅰ421

12.3一个更好的BufferedReader422

12.3.1问题陈述422

12.3.2情景422

12.3.3寻找主体422

12.3.4 确定行为422

12.3.5定义接口422

12.3.6定义实例变量423

12.3.7实现方法423

12.3.8类的完整实现424

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

状态426

12.5回顾Name类——添加额外

状态426

12.6Java小插曲继承430

12.6.1基本机制与术语430

12.6.2构造器431

12.6.3继承和isa关系432

12.6.4protected关键字433

12.6.5继承与合成433

12.6.6继承还是合成434

12.6.7常见错误434

12.6.8类的层次结构435

12.6.9Object类435

12.7覆盖方法436

12.8Java小插曲多态436

12.8.1覆盖机制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.15复习题451

12.16练习题451

12.17GUI补充材料探究Java类

层次结构中的抽象窗口工具箱

(Abstract Window Toolkit)452

第13章异常460

13.1预计异常460

13.2遇到异常460

13.2.1抛出异常461

13.2.2throws子句463

13.3Java小插曲Exception类463

13.3.1标注异常463

13.3.2Checked Exception 与

RuntimeException463

13.4处理异常464

13.5对异常的责任468

13.6异常并非总是错误469

13.7本章小结470

13.8关键术语471

13.9复习题471

13.10练习题471

13.11GUI补充材料模型视图控

制器(MVC)范式472

第14章递归482

14.1概述482

14.2示例求幂483

14.2.1递归调用484

14.2.2结束485

14.3如何设计递归方法485

14.3.1读取数据来构造一个Repair

Person对象的集合485

14.3.2在集合中寻找最近的修

理工486

14.3.3两种递归模式487

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

14.5在向量、数组和字符串中

使用递归492

14.6排列495

14.7Hanoi塔498

14.7.1智力游戏498

14.7.2找出简单的方法499

14.7.3问题阐述502

14.7.4场景502

14.7.5实现方法504

14.8递归和迭代510

14.9本章小结512

14.10关键术语512

14.11复习题513

14.12练习题513

14.13GUI补充材料Hanoi塔

小应用程序515

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

15.1客户端和服务器533

15.2Internet通信533

15.2.1套接字534

15.2.2TCPConnection类535

15.3客户服务器计算537

15.4一些简单的客户端类539

15.4.1WebClient类539

15.4.2MailClient类541

15.4.3处理客户端异常544

15.5本章小结547

15.6关键术语547

15.7复习题547

15.8练习题548

15.9GUI补充材料Swing548

附录A三个Java环境558

A.1引言558

A.2Macintosh环境558

A.3UNIX/Linux环境558

A.4Windows环境559

附录BAWIO561

B.1引言561

B.2使用AWIO进行输出561

B.2.1AWPrinter类561

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

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

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

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

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

附录C使用Enumeration遍历集合568

C.1遍历矢量——Enumeration568

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

元素569