第1章 概述 1
1.1 简介 2
1.2 Internet与万维网 2
1.3 C语言和C++的历史 3
1.4 Java的历史 3
1.5 Java的类库 4
1.6 典型的Java开发环境 4
1.7 关于Java和本书的说明 6
1.8 尝试运行一个Java程序 7
1.9 软件工程案例分析:对象技术和UML介绍 9
1.10 Web 2.0 13
1.11 软件技术 13
1.12 小结 14
1.13 Web资源 14
第2章 Java程序简介 17
2.1 简介 18
2.2 第一个Java程序:输出一行文本 18
2.3 修改第一个Java程序 22
2.4 用printf显示文本 24
2.5 另一个Java程序:整数相加 24
2.6 算术运算 28
2.7 判断:相等运算符与关系运算符 29
2.8 (选读)软件工程案例分析:分析需求文档 32
2.9 小结 38
第3章 简要介绍类和对象 39
3.1 简介 40
3.2 类、对象、方法和实例变量 40
3.3 声明带方法的类并实例化类的对象 41
3.4 声明带参数的方法 43
3.5 实例变量、set方法和get方法 46
3.6 基本类型与引用类型的比较 49
3.7 用构造函数初始化对象 50
3.8 浮点数与double类型 52
3.9 (选读)软件工程案例分析:确定需求文档中的类 55
3.10 小结 60
第4章 控制语句(1) 61
4.1 简介 62
4.2 控制结构 62
4.3 if单选择语句 63
4.4 if…else双选择语句 64
4.5 while循环语句 66
4.6 计数器控制循环 67
4.7 标记控制循环 70
4.8 嵌套控制语句 74
4.9 复合赋值运算符 76
4.10 增量和减量运算符 77
4.11 基本类型 79
4.12 (选读)软件工程案例分析:确定类属性 79
4.13 小结 82
第5章 控制语句(2) 83
5.1 简介 84
5.2 计数器控制循环的实质 84
5.3 for循环语句 85
5.4 使用for语句的例子 88
5.5 do…while循环语句 91
5.6 switch多选择语句 92
5.7 break与continue语句 97
5.8 逻辑运算符 98
5.9 (选读)软件工程案例分析:确定类的状态和活动 102
5.10 小结 105
第6章 方法:深入探究 106
6.1 简介 107
6.2 Java中的程序模块 107
6.3 静态方法,静态字段和Math类 108
6.4 声明多参数方法 110
6.5 关于方法声明与使用 112
6.6 方法调用栈与活动记录 113
6.7 实参提升与强制转换 114
6.8 Java API包 114
6.9 案例分析:随机数生成 115
6.10 案例分析:机会游戏(引入枚举) 119
6.11 声明的作用域 122
6.12 方法重载 124
6.13 递归介绍 127
6.14 递归概念 127
6.15 使用递归的例子:阶乘 127
6.16 使用递归的例子:Fibonacci序列 129
6.17 递归与方法调用栈 131
6.18 递归与迭代的比较 132
6.19 (选读)软件工程案例分析:确定类操作 134
6.20 小结 138
第7章 数组 139
7.1 简介 140
7.2 数组 140
7.3 声明与创建数组 141
7.4 数组使用举例 142
7.5 案例分析:洗牌与发牌模拟 148
7.6 增强for语句 151
7.7 将数组传入方法 151
7.8 案例分析:GradeBook类用数组存储成绩 154
7.9 多维数组 157
7.10 案例分析:GradeBook类使用二维数组 160
7.11 游长实参表 164
7.12 使用命令行实参 165
7.13 (选读)软件工程案例分析:对象间的协作 166
7.14 小结 171
第8章 类与对象:深入探究 173
8.1 简介 174
8.2 Time类案例分析 174
8.3 控制成员访问 177
8.4 用this引用访问当前对象的成员 177
8.5 Time类案例分析:重载构造函数 179
8.6 默认和无实参构造函数 183
8.7 关于set方法和get方法 183
8.8 合成 184
8.9 枚举 186
8.10 内存回收与finalize方法 188
8.11 静态类成员 189
8.12 静态导入 192
8.13 final实例变量 193
8.14 软件复用性 194
8.15 数据抽象与封装 195
8.16 Time类案例分析:创建包 196
8.17 包访问性 200
8.18 (选读)软件工程案例分析:开始编程ATM系统的类 201
8.19 小结 205
第9章 面向对象编程:继承 206
9.1 简介 207
9.2 超类与子类 207
9.3 protected成员 209
9.4 超类与子类的关系 209
9.5 子类的构造函数 225
9.6 继承与软件工程 229
9.7 Object类 230
9.8 小结 231
第10章 面向对象编程:多态 232
10.1 简介 233
10.2 多态举例 233
10.3 演示多态行为 234
10.4 抽象类和方法 236
10.5 案例分析:使用多态的工资系统 237
10.6 final方法和类 248
10.7 案例分析:创建和使用接口 248
10.8 (选读)软件工程案例分析:在ATM系统中加入继承 256
10.9 小结 260
第11章 GUI组件(1) 262
11.1 简介 263
11.2 基于简单GUI的输入/输出与JOptionPane 263
11.3 Swing组件概述 265
11.4 在窗口中显示文本和图形 267
11.5 文本段与带嵌套类的事件处理 270
11.6 常见的GUI事件类型与监听器接口 275
11.7 如何进行事件处理 276
11.8 JButton 277
11.9 维护状态的按钮 280
11.10 JComboBox与用于事件处理的匿名内部类 284
11.11 JList 287
11.12 多选择列表 289
11.13 鼠标事件处理 291
11.14 适配器类 294
11.15 用于鼠标绘制的JPanel子类 296
11.16 键盘事件处理 299
11.17 布局管理器 301
11.18 使用窗格管理更复杂的布局 308
11.19 JTextArea 309
11.20 小结 311
第12章 图形与Java 2D 312
12.1 简介 313
12.2 图形环境与图形对象 314
12.3 颜色控制 314
12.4 字体控制 319
12.5 画线、矩形和椭圆 323
12.6 画弧 325
12.7 画多边形和折线 327
12.8 Java 2D API 329
12.9 小结 334
第13章 异常处理 335
13.1 简介 336
13.2 异常处理概述 336
13.3 例子:除数为0不用异常处理 337
13.4 例子:处理ArithmeticException异常和InputMismatchException异常 338
13.5 何时使用异常处理 342
13.6 Java异常层次 342
13.7 finally块 344
13.8 堆栈解退 347
13.9 printStackTrace、getStackTrace和getMessage方法 348
13.10 链式异常 350
13.11 声明新的异常类型 352
13.12 前置条件和后置条件 352
13.13 断言 353
13.14 小结 354
第14章 文件与流 355
14.1 简介 356
14.2 数据层次 356
14.3 文件与流 358
14.4 File类 359
14.5 顺序访问文本文件 362
14.6 对象序列化 372
14.7 其他的java.io类 379
14.8 用JFileChooser打开文件 380
14.9 小结 383
第15章 泛型 384
15.1 简介 385
15.2 泛型方法的由来 385
15.3 泛型方法:实现和编译时翻译 387
15.4 其他的编译时翻译问题:将类型参数用做返回类型的方法 389
15.5 重载泛型方法 391
15.6 泛型类 391
15.7 原始类型 398
15.8 接收类型参数的方法中的通配符 401
15.9 关于泛型与继承的说明 404
15.10 小结 404
15.11 Internet和Web资源 405
第16章 集合 406
16.1 简介 407
16.2 集合概述 407
16.3 Arrays类 407
16.4 Collection接口和Collections类 410
16.5 列表 410
16.6 集合算法 418
16.7 java.util包的Stack类 428
16.8 PriorityQueue类和Queue接口 429
16.9 Set 430
16.10 Map 432
16.11 Properties类 435
16.12 同步集合 437
16.13 不可修改集合 438
16.14 抽象实现 438
16.15 小结 439
第17章 GUI组件(2) 440
17.1 简介 441
17.2 JSlider 441
17.3 关于窗口的更多说明 444
17.4 对框架使用菜单 444
17.5 JPopupMenu 450
17.6 可插入外观 452
17.7 JDesktopPane和JInternalFrame 455
17.8 JTabbedPane 458
17.9 布局管理器:BoxLayout和GridBagLayout 459
17.10 小结 468
第18章 多线程编程 469
18.1 简介 470
18.2 线程状态:线程的生命周期 471
18.3 线程优先级与线程调度 472
18.4 创建并执行线程 474
18.5 线程同步 477
18.6 没有同步的生产者/消费者关系 483
18.7 生产者/消费者关系:ArrayBlockingQueue 487
18.8 同步的生产者/消费者关系 489
18.9 生产者/消费者关系:有界缓冲区 494
18.10 生产者/消费者关系:Lock和Condition接口 499
18.11 GUI的多线程 504
18.12 java.util.concurrent中的其他类和接口 513
18.13 小结 514
第19章 网络编程 515
19.1 简介 516
19.2 操作URL 516
19.3 读取Web服务器上的文件 520
19.4 用流套接字建立简单的服务器 522
19.5 用流套接字建立简单的客户端 524
19.6 流套接字连接与客户/服务器交互 524
19.7 无连接客户/服务器交互与数据报 532
19.8 使用多线程服务器的客户/服务器一字棋游戏 538
19.9 安全与网络 548
19.10 案例分析:DeitelMessenger服务器与客户端 548
19.11 小结 548
第20章 用JDBC访问数据库 549
20.1 简介 550
20.2 关系数据库 550
20.3 关系数据库概述:books数据库 551
20.4 SQL 553
20.5 MySQL和MySQL Connector/J的安装简介 559
20.6 设置MySQL用户账户简介 560
20.7 在MySQL中创建books数据库 560
20.8 用JDBC操作数据库 561
20.9 RowSet接口 572
20.10 Java DB/Apache Derby 574
20.11 PreparedStatement接口 575
20.12 存储过程 586
20.13 事务处理 586
20.14 小结 587
20.15 Web资源 587
第21章 JavaServer Faces与Web程序 588
21.1 简介 589
21.2 简单HTTP事务 589
21.3 多层程序体系结构 592
21.4 Java的Web技术 592
21.5 在Netbeans中创建并运行简单的程序 595
21.6 JSF组件 604
21.7 会话跟踪 613
21.8 小结 628
第22章 启用Ajax的JavaServer Faces Web程序 629
22.1 简介 630
22.2 在Web程序中访问数据库 630
22.3 启用Ajax的JSF组件 638
22.4 创建自动完成的文本段并使用虚拟表单 640
22.5 小结 647
第23章 JAX-WS Web服务 648
23.1 简介 649
23.2 Java Web服务基础 650
23.3 创建、发布、测试和描述Web服务 650
23.4 消费Web服务 658
23.5 SOAP 664
23.6 Web服务中的会话跟踪 665
23.7 在Web程序中消费数据库驱动的Web服务 676
23.8 将用户定义类型的对象传递给Web服务 682
23.9 小结 689
第24章 格式化输出 690
24.1 简介 691
24.2 流 691
24.3 用printf进行格式化输出 691
24.4 输出整数 691
24.5 输出浮点数 692
24.6 输出字符串和字符 693
24.7 输出日期和时间 694
24.8 其他转换字符 696
24.9 用字段宽度和精度进行输出 697
24.10 在printf格式串中使用标志 698
24.11 用实参索引进行输出 701
24.12 输出字面值和转义序列 701
24.13 用Formatter类进行格式化输出 702
24.14 小结 703
第25章 字符串、字符和正则表达式 704
25.1 简介 705
25.2 字符和字符串基础 705
25.3 String类 705
25.4 StringBuilder类 714
25.5 Character类 719
25.6 StringTokenizer类 723
25.7 正则表达式、Pattern类和Matcher类 724
25.8 小结 729
附录A 运算符优先级表 730
附录B ASCII字符集 732
附录C 关键字和保留字 733
附录D 基本类型 734
附录E GroupLayout 735
附录F Java桌面集成组件(JDIG) 744
附录G 使用Java API文档 749
附录H ATM案例分析代码 756
附录I UML 2的其他框图类型 773
附录J 使用调试器 774
索引 786