第1章 起步 1
测试 1
设计 2
一个简单的测试 2
JUnit 4
增加一个测试 5
创建Student对象 7
创建Student类 7
构造函数 8
局部变量 9
从方法返回一个值 10
断言 12
实例变量 14
总结这个测试 16
重构 17
this 19
private 21
命名约定 22
空白区域 23
练习 24
第2章 Java基础 25
课程安排 25
学生注册 27
int 27
初始化 29
默认构造函数 30
测试套件 30
SDK和java.util.ArrayList 31
增加对象 33
渐增重构 35
内存中的对象 36
包和import语句 37
java.lang包 38
默认包和package语句 38
setUp方法 40
更多的重构 41
类常量 42
Dates 43
重载构造函数 43
不赞成警告 47
重构 48
用Calendar创建日期 50
注释 51
Javadoc注释 52
练习 54
第3章 字符串和包 57
字符和字符串 57
字符串 59
StringBuilder 60
系统属性 62
遍历所有的学生 63
单职责原则 64
重构 67
System.out 69
使用System.out 71
重构 71
包结构 72
访问修饰符 73
使用Ant 78
练习 81
类方法 83
第4章 类方法和类变量 83
类变量 86
使用类方法操作类变量 88
静态导入 90
增量 92
工厂方法 93
简单设计 95
静态的危险 95
使用静态所需要注意的 96
布尔型 97
Jeff静态规则 97
测试就是文档 101
关于初始化的更多内容 103
异常 104
再看基本类型的初始化 105
练习 106
第5章 接口和多态 109
排序:准备工作 109
排序:Collections.sort 110
CourseReportTest 111
接口 112
为什么需要接口 113
实现Comparable 114
根据学科和编号进行排序 116
If语句 116
学生的成绩 118
浮点数 118
测试成绩 119
重构 121
枚举 123
多态 124
使用接口引用 129
ArrayList和List接口 131
练习 131
第6章 继承 135
switch语句 135
Case标记只是标记 136
Map 138
继承 140
抽象类 143
方法扩展 144
重构 146
增强的枚举Grade 147
夏季课程安排 148
调用基类的构造函数 149
重构 153
深入构造函数 155
继承和多态 156
子合约原则 157
练习 164
第7章 遗留元素 167
分解学生全名 168
循环结构 168
比较Java循环 175
重构 176
循环控制语句 177
三元操作符 179
遗留的集合类 180
迭代器 181
迭代器和for-each循环 182
类型转换 183
包装类 185
数组 188
重构 195
练习 197
第8章 异常和日志 201
异常 202
异常处理 204
检查异常 204
异常层次关系 206
创建自己的异常类型 207
检查异常和非检查异常 209
消息 209
捕获多个异常 211
重新抛出异常 212
堆栈跟踪 214
finally块 215
重构 216
日志 218
Java中的日志 219
测试日志 222
将日志定向到文件 225
日志的测试哲学 227
更多关于FileHandler 228
日志等级 229
日志层次结构 230
日志补充说明 231
练习 232
第9章 Map和相等性 237
逻辑操作符 237
短路 238
哈希表 239
课程 241
重构Session 242
相等性 248
相等性的定义 250
苹果和橙子 251
集合与相等性 253
哈希表 254
冲突 255
一个理想的哈希算法 256
hashCode最后一个要点 258
更多关于HashMap 259
其它哈希表和Set实现 263
toString 264
字符串和相等性 266
练习 267
第10章 数学 269
BigDecimal 269
更多关于基本数字类型 273
整数运算 273
数字类型转换 274
运算优先级 275
NaN(Not a Number) 276
无穷大 277
数字溢出 278
位操作 279
iava.lang.Math 285
数字包装类 287
随机数 288
练习 291
第11章 IO(输入/输出) 295
组织 295
字符流 296
写入文件 300
java.io.File 302
学生用户界面 304
字节流与转换 304
测试应用 307
数据流 309
CourseCatelog 309
高级流 312
对象流 312
随机存取文件 318
学生字典 320
sis.db.DataFileTest 321
静态内嵌(static nested)类和内联(inner)类 323
sis.db.DataFile 324
sis.db.KeyFileTest 327
sis.db.KeyFile 328
sis.util.IOUtilTest 329
sis.util.IOUtil 330
sis.util.TestUtil 331
方案的改进 331
练习 332
第12章 反射及其他高级主题 335
再顾Mock对象 335
Jim Bob ACH接口 337
Mock类 338
Account类的实现 340
匿名内联类 342
适配器(Adapter) 344
访问外围类中的变量 346
折衷 348
反射(Refelection) 348
使用JUnit代码 349
Class类 350
建立测试套件 352
类修饰符 354
动态代理 355
安全帐号类 356
建立安全帐号方案 358
SecureProxy类 362
反射的问题 364
练习 365
第13章 多线程 367
多线程 367
搜索(Search)服务器 368
Search类 369
更少依赖的测试 372
服务器 374
测试中的等待 376
创建并运行线程 377
合作式协作式(cooperative)与可抢占的(preemptive)多任务 380
同步 381
使用Runnable创建线程 383
synchronized 384
BlockingQueue 385
同步的集合类 385
停止线程 386
Wait/Notify 388
wait和notify的补充注意事项 391
锁与条件 392
线程优先级 394
死锁 394
ThreadLocal 395
Timer类 398
Thread的杂项 400
练习 404
总结:同步的基本设计原则 404
第14章 范型 405
参数化类型 405
集合框架(Collection Framework) 406
多类型参数 406
创建参数化类型 407
擦拭法 409
上限(Upper Bound) 411
通配符(Wildcard) 413
使用通配符的隐含问题(Implication) 415
范型方法 416
通配符捕获(Wildcard Capture) 417
Super 418
附加限界 419
原始类型(Raw Type) 420
Checked集合 421
数组(Array) 423
额外的局限 423
反射 424
最后的注意事项 425
练习 425
断言 427
第15章 断言与注解 427
assert语句vs.JUnit的Assert方法 428
注解(Annotation) 429
建立一个测试工具 430
TestRunnerTest 430
TestRunner 432
@TestMethod注解 434
保留(Retention) 436
注解的目标(Annotation Tagets) 437
跳过测试方法 438
修改TestRunner 439
单值(Single-Value)注解 440
TestRunner的用户界面类 442
数组参数 443
多个参数的注解 445
缺省值 446
附加返回类型与复式注解类型 447
包注解 449
兼容性考虑 450
总结 451
关于注解的额外注意事项 451
练习 452
附加课Ⅰ Swing,第一部分 453
Swing 454
起步 454
Swing应用的设计 458
面板(Panel) 459
重构(Refactory) 463
更多的控件 466
重构(Refactory) 468
按钮点击与ActionListener 471
列表Model 473
应用 476
布局 478
继续前进 488
附加课Ⅱ Swing,第二部分 489
界面美化的杂项 490
体验(feel) 494
表格(Table) 513
反馈(Feedback) 518
响应性(Responsiveness) 523
余下的任务 526
最后的注意事项 527
附加课Ⅲ Java的杂项 529
JAR 529
正则表达式 532
克隆(Cloning) 协变(Covariance) 536
JDBC 538
国际化(Internationalization) 545
按引用调用vs.按值调用 553
Java的边缘地带 554
还有哪些内容 563
附录A 敏捷Java的术语表 569
附录B Java操作符的优先规则 581
附录C IDEA入门 583
IDEA 583
Hello项目 584
运行测试 589
利用IDEA的优势 594
Agile Java References 597
索引 599