第1章 初识Java 1
1.1 第一个Java程序 1
1.1.1 编写Java程序 1
1.1.2 编译Java程序 2
1.1.3 运行Java程序 2
1.2 Java编码规范 3
1.3 集成开发环境 3
1.4 小结 4
习题 4
第2章 语言基础 5
2.1 ASCII和Unicode 5
2.2 分隔符 7
2.3 基本类型 7
2.4 变量 8
2.4.1 Java字母和Java数字 9
2.4.2 Sun公司的变量命名规范 11
2.5 常量 11
2.6 字面量 11
2.6.1 整数字面量 11
2.6.2 浮点字面量 12
2.6.3 布尔字面量 14
2.6.4 字符字面量 14
2.7 基本类型转换 15
2.7.1 扩大转换 15
2.7.2 缩小转换 15
2.8 运算符 16
2.8.1 一元运算符 17
2.8.2 算术运算符 18
2.8.3 相等运算符 19
2.8.4 关系运算符 20
2.8.5 条件运算符 20
2.8.6 移位运算符 21
2.8.7 赋值运算符 22
2.8.8 整数按位运算符 22
2.8.9 逻辑运算符 23
2.8.10 运算符优先级 23
2.8.11 升级 24
2.9 注释 24
2.10 小结 25
习题 25
第3章 语句 26
3.1 Java语句概述 26
3.2 if语句 27
3.3 while语句 29
3.4 do-while语句 31
3.5 for语句 31
3.6 break语句 34
3.7 continue语句 35
3.8 switch语句 36
3.9 小结 37
习题 37
第4章 对象和类 38
4.1 什么是Java对象 38
4.2 Java类 39
4.2.1 域 40
4.2.2 方法 40
4.2.3 UML类图中的类成员 42
4.3 创建对象 42
4.4 关键字null 43
4.5 内存中的对象 44
4.6 Java包 45
4.7 封装和存取控制 46
4.7.1 类访问控制修饰符 47
4.7.2 类成员访问控制修饰符 48
4.8 关键字this 50
4.9 使用其他类 51
4.10 final变量 53
4.11 静态成员 53
4.12 静态final变量 55
4.13 静态导入 56
4.14 变量作用域 57
4.15 方法重载 58
4.16 传值还是传引用 59
4.17 加载、连接和初始化 59
4.17.1 加载 60
4.17.2 链接 60
4.17.3 初始化 60
4.18 对象创建的初始化 61
4.19 对象的比较 64
4.20 垃圾回收器 64
4.21 小结 65
习题 65
第5章 核心类 66
5.1 java.lang.Object 67
5.2 java.lang.String 67
5.2.1 比较两个String 68
5.2.2 字符串字面量 69
5.2.3 特定字符转义 69
5.2.4 对String使用switch语句 70
5.2.5 String类的构造器 70
5.2.6 String类的方法 71
5.3 StringBuffer和StringBuilder 73
5.3.1 StringBuilder类的构造器 73
5.3.2 StringBuilder类的方法 74
5.4 基本类型封装 74
5.4.1 java.lang.Integer 75
5.4.2 java.lang.Boolean 75
5.4.3 java.lang.Character 76
5.5 数组 76
5.5.1 迭代数组 78
5.5.2 修改数组大小 78
5.5.3 将String数组传递给main 80
5.6 java.lang.Class 80
5.7 java.lang.System 81
5.8 java.util.Scanner 84
5.9 装箱和拆箱 85
5.10 可变参数 85
5.11 格式和printf方法 86
5.12 小结 87
习题 87
第6章 继承 88
6.1 继承概述 88
6.1.1 关键字extends 88
6.1.2 is-a关系 89
6.2 可访问性 90
6.3 方法覆盖 91
6.4 调用超类的构造器 92
6.5 调用超类的隐藏成员 94
6.6 类型转换 95
6.7 final类 95
6.8 关键字instanceof 96
6.9 小结 96
习题 96
第7章 错误处理 97
7.1 捕捉异常 97
7.2 没有catch块的try词句 99
7.3 捕捉多个异常 99
7.4 try-with-resource语句 100
7.5 java.lang.Exception类 101
7.6 从方法抛出异常 102
7.7 用户自定义异常 103
7.8 异常处理总结 104
7.9 小结 105
习题 105
第8章 数字和日期 106
8.1 数字解析 106
8.2 数字格式化 107
8.3 用java.text.NumberFormat进行数字解析 108
8.4 java.lang.Math类 109
8.5 java.util.Date类 109
8.6 java.util.Calendar类 110
8.7 用DateFormat进行日期解析和格式化 111
8.7.1 DateFormat 111
8.7.2 SimpleDateFormat类 113
8.8 小结 114
习题 114
第9章 接口和抽象类 115
9.1 接口的概念 115
9.2 从技术上来看的接口 116
9.2.1 接口中的域 117
9.2.2 方法 118
9.3 基类 118
9.4 抽象类 119
9.5 小结 120
习题 120
第10章 枚举 121
10.1 枚举概述 121
10.2 类中的枚举 122
10.3 java.lang.Enum类 123
10.4 迭代枚举值 123
10.5 switch中的枚举 123
10.6 小结 124
习题 124
第11章 集合框架 125
11.1 集合框架概述 125
11.2 Collection接口 126
11.3 List和ArrayList 126
11.4 用Iterator和for迭代集合 128
11.5 Set和HashSet 129
11.6 Queue和LinkedList 130
11.7 集合转换 131
11.8 Map和HashMap 131
11.9 对象的比较和排序 132
11.9.1 使用java.lang.Comparable 132
11.9.2 使用Comparable和Comparator 135
11.10 小结 139
习题 139
第12章 泛型 140
12.1 没有泛型的生活 140
12.2 泛型类型简介 141
12.3 使用没有类型参数的泛型类型 144
12.4 使用?通配符 144
12.5 在方法中使用有界通配符 146
12.6 编写泛型类型 147
12.7 小结 148
习题 148
第13章 输入/输出 149
13.1 文件系统和路径 150
13.2 文件和目录的处理与操作 152
13.2.1 创建和删除文件与目录 152
13.2.2 检索目录的对象 152
13.2.3 复制和移动文件 153
13.2.4 文件的读取和写入 153
13.3 输入/输出流 155
13.4 读取二进制数据 156
13.5 写入二进制数据 159
13.6 写入文本(字符) 162
13.6.1 Writer 163
13.6.2 OutputStreamWriter 163
13.6.3 PrintWriter 164
13.7 读取文本(字符) 166
13.7.1 Reader 166
13.7.2 InputStreamReader 167
13.7.3 BufferedReader 168
13.8 用PrintStream记录日志 169
13.9 随机访问文件 170
13.10 对象序列化 174
13.11 小结 177
习题 177
第14章 嵌套类和内部类 178
14.1 嵌套类概述 178
14.2 静态嵌套类 179
14.3 成员内部类 180
14.4 局部内部类 182
14.5 匿名内部类 184
14.6 深入嵌套类和内部类 185
14.7 小结 187
习题 187
第15章 Swing基础 188
15.1 AWT组件 189
15.2 有用的AWT类 191
15.2.1 java.awt.Color 191
15.2.2 java.awt.Font 191
15.2.3 java.awt.Point 192
15.2.4 java.awt.Dimension 192
15.2.5 java.awt.Rectangle 192
15.2.6 java.awt.Graphics 192
15.2.7 java.awt.Toolkit 193
15.3 基本Swing组件 193
15.3.1 JFrame 194
15.3.2 调整大小和定位 197
15.3.3 扩展JFrame 198
15.3.4 JComponent 199
15.3.5 Icon和ImageIcon 200
15.3.6 JLabel 201
15.3.7 JButton 202
15.3.8 JTextField和JPasswordField 203
15.3.9 JTextArea 205
15.3.10 JCheckbox 207
15.3.11 JRadioButton 208
15.3.12 Jlist 209
15 3 13 JComboBox 211
15.3.14 JDialog 212
15.3.15 JOptionPane 215
15.3.16 JFileChooser 219
15.4 小结 221
习题 221
第16章 Swing进阶 222
16.1 布局管理器 222
16.1.1 BorderLayout 223
16.1.2 FlowLayout 225
16.1.3 BoxLayout 227
16.1.4 GridLayout 228
16.1.5 不使用LayoutManager 229
16.2 事件处理 230
16.2.1 Java事件模型 230
16.2.2 Swing事件处理 231
16.2.3 AWT事件API 232
16.2.4 处理ActionEvent 235
16.2.5 处理MouseEvent 236
16.2.6 将监听器写成匿名类 237
16.2.7 处理JRadioButton的ActionEvent 240
16.2.8 处理KeyEvent 241
16.2.9 处理WindowListener 242
16.3 使用菜单 243
16.4 界面外观 245
16.5 快速启动画面 246
16.6 系统托盘支持 249
16.7 桌面帮助程序 251
16.8 小结 255
习题 255
第17章 多态 256
17.1 定义多态 256
17.2 多态的作用 259
17.3 绘图应用程序中的多态 260
17.4 多态和反射 265
17.5 小结 266
习题 266
第18章 注解 267
18.1 注解概述 267
18.1.1 注解和注解类型 267
18.1.2 注解语法 268
18.1.3 注解接口 268
18.2 标准注解 269
18.2.1 Override 269
18.2.2 Deprecated 270
18.2.3 SuppressWarnings 271
18.3 通用注解 272
18.4 标准元注解 272
18.4.1 Documented 272
18.4.2 Inherited 273
18.4.3 Retention 273
18.4.4 Target 273
18.5 定制注解类型 274
18.5.1 编写自己的定制注解类型 274
18.5.2 使用定制注解类型 275
18.5.3 用反射查询注解 275
18.6 小结 276
习题 276
第19章 国际化 277
19 1 Locales 278
19.2 国际化应用程序 279
19.2.1 将文本组件单独放进属性文件 279
19.2.2 用ResourceBundle读取属性文件 280
19.3 国际化的Swing应用程序 280
19.4 小结 282
习题 282
第20章 Applet 283
20.1 Applet简史 283
20.2 AppletAPI 284
20.2.1 Applet类 284
20.2.2 AppletContext接口 286
20.2.3 AudioClip接口 286
20.2.4 AppletStub接口 287
20.3 安全限制 287
20.4 编写和部署Applet 287
20.5 AppletViewer工作原理 289
20.6 将参数传递给Applet 290
20.7 SoundPlayerApplet 293
20.8 JApplet 294
20.9 JAR文件中的Applet部署 295
20.10 更快速加载 296
20.11 小结 296
习题 296
第21章 Java网络 297
21.1 网络概述 297
21.2 超文本传输协议(HTTP) 298
21.2.1 HTTP请求 298
21.2.2 HTTP响应 299
21.3 java.net.URL 300
21.3.1 解析URL 300
21.3.2 读取Web资源 301
21.4 java.net.URLConnection 302
21.4.1 读取Web资源 303
21.4.2 写入Web服务器 305
21.5 java.net.Socket 305
21.6 java.net.ServerSocket 307
21.7 Web服务器应用程序 308
21.7.1 HttpServer类 308
21.7.2 Request类 312
21.7.3 Response类 313
21.7.4 运行应用程序 315
21.8 小结 316
习题 316
第22章 Java数据库连接 317
22.1 JDBC简介 317
22.2 数据访问的四个步骤 318
22.2.1 加载JDBC驱动程序 318
22.2.2 获得数据库连接 319
22.2.3 创建Statement对象 320
22.2.4 创建ResultSet对象 321
22.3 关闭JDBC对象 322
22.4 读取元数据 323
22.5 SQLTool示例 323
22.5.1 准备MySQL 324
22.5.2 SQLTool类 325
22.6 小结 328
习题 328
第23章 Java线程 329
23.1 Java线程简介 329
23.2 创建线程 330
23.2.1 扩展线程 331
23.2.2 实现Runnable 332
23.3 使用多线程 333
23.4 线程优先级 334
23.5 停止线程 336
23.6 同步 338
23.6.1 线程冲突 339
23.6.2 方法同步 340
23.6.3 块同步 341
23.7 可见性 341
23.8 线程协调 344
23.9 使用Timer 348
23.10 SwingTimer 350
23.11 小结 352
习题 352
第24章 并发工具 353
24.1 原子变量 353
24.2 Executor和ExecutorService 354
24.3 Callable和Future 358
24.4 SwingWorker 361
24.5 锁 364
习题 365
第25章 安全 366
25.1 Java安全概述 366
25.2 使用安全管理器 367
25.3 策略文件 368
25.3.1 keystore 369
25.3.2 grant 369
25.4 权限 370
25.4.1 java.io.FilePermission 371
25.4.2 java.security.BasicPermission 371
25.4.3 java.util.Property-Permission 371
25.4.4 java.net.SocketPermission 371
25.4.5 java.security.Unresolve-Permission 372
25.4.6 java.lang.Runtime-Permission 372
25.4.7 java.awt.AWTPermission 372
25.4.8 java.net.NetPermission 372
25.4.9 java.lang.reflect.RetlectPermission 373
25.4.10 java.io.Serializable-Permission 373
25.4.11 java.security.Security-Permission 373
25.4.12 java.securityAllPermissjon 373
25.4.13 javax.security.auth.AuthPermission 373
25.5 使用PolicyTool 374
25.6 Applet安全 375
25.7 安全编程 375
25.8 加密概述 376
25.8.1 加密/解密 377
25.8.2 认证 377
25.8.3 数据完整性 378
25.8.4 SSL工作原理 379
25.9 创建证书 380
25.10 KeyTool程序 380
25.10.1 生成密钥对 380
25.10.2 认证 382
25.10.3 将证书导入密钥库 382
25.10.4 从密钥库导出证书 382
25.10.5 列出密钥库条目 383
25.11 JarSigner工具 383
25.11.1 签署JAR文件 383
25.11.2 验证已签署的JAR文件 383
25.11.3 范例:签署Applet 384
25.12 JavaCryptographyAPI 386
25.13 小结 386
习题 386
第26章 JavaWeb应用程序 387
26.1 Servlet应用程序架构 387
26.2 ServletAPI概述 388
26.3 Servlet 389
26.4 编写基本Servlet应用程序 390
26.4.1 安装Tomcat 390
26.4.2 编写和编译Servlet类 390
26.4.3 应用程序的目录结构 392
26.4.4 调用Servlet 393
26.5 ServletRequest 393
26.6 ServletResponse 394
26.7 ServletConfig 394
26.8 ServletContext 396
26.9 GenericServlet 397
26.10 HTTP Servlet 398
26.10.1 HttpServlet 399
26.10.2 HttpServletRequest 400
26.10.3 HttpServletResponse 401
26.10.4 编写HttpServlet 401
26.11 使用部署描述符 404
26.12 小结 407
习题 407
第27章 JavaServer Pages 408
27.1 JSP概述 408
27.2 jspInit、jspDestroy以及其他方法 410
27.3 隐式对象 411
27.4 JSP语法元素 412
27.4.1 指令 412
27.4.2 脚本元素 415
27.5 处理错误 416
27.6 小结 417
习题 417
第28章 Javadoc 418
28.1 在Java类中编写文档 418
28.1.1 @author 419
28.1.2 {@code} 419
28.1.3 {@docRoot} 420
28.1.4 @deprecated 420
28.1.5 @exception 420
28.1.6 {@inheritDoc} 420
28.1.7 {@link} 420
28.1.8 {@linkplain} 421
28.1.9 {@literal} 421
28.1.10 {@param} 421
28.1.11 @return 421
28.1.12 @see 422
28.1.13 @serial 422
28.1.14 @serialData 422
28.1.15 @serialField 422
28.1.16 @since 423
28.1.17 @throws 423
28.1.18 {@value} 423
28.1.19 @version 423
28.2 Javadoc语法 423
28.2.1 Javadoc选项 424
28.2.2 标准doclet选项 425
28.2.3 生成文档 426
28.3 小结 427
习题 427
第29章 应用程序部署 428
29.1 JWS概述 428
29.2 JNLP文件语法 429
29.2.1 jnlp元素 429
29.2.2 information元素 430
29.2.3 security元素 431
29.2.4 resources元素 431
29.2.5 application-desc元素 431
29.2.6 applet-desc元素 431
29.3 部署范例 432
29.4 安全关注 434
29.5 小结 435
习题 435
第30章 反射 436
30.1 概述 436
30.2 java.lang.Class 437
30.3 创建对象 438
30.4 创建数组 440
30.5 域操作 442
30.6 方法操作 443
30.7 调用方法 444
30.8 小结 446
习题 446
第31章 JavaFX概述 447
31.1 概述 447
31.2 安装 448
31.3 第一个JavaFX应用程序 448
31.4 Application、Stage和Scene 449
31.4.1 Application类 450
31.4.2 Stage类 450
31.4.3 Scene类 450
31.5 UI组件 451
31.6 控件 451
31.7 Region 454
31.8 事件处理 456
31.9 CSS样式 459
31.10 小结 462
习题 462
第32章 使用FXML的JavaFX 463
32.1 概述 463
32.2 一个基于FXML的简单应用程序 465
32.3 用FXML进行事件处理 467
32.4 小结 470
习题 470
第33章 Android编程介绍 471
33.1 概述 471
33.2 下载安装Android开发工具 471
33.3 第一个Android应用程序 472
33.4 Android清单 474
33.5 在仿真器上运行应用程序 475
33.6 应用程序结构 478
33.7 替换应用程序图标 478
33.8 日志记录 478
33.9 调试应用程序 479
33.10 在实际设备上运行 481
33.11 更新SDK 481
33.12 小结 482
习题 482
第34章 创建Android应用程序 483
34.1 概述 483
34.2 活动的生命周期 484
34.3 AndroidUI组件 485
34.3.1 使用ADTEclipseUI工具 486
34.3.2 示例:使用Basic Components 486
34.4 布局组件 489
34.5 监听器 490
34.6 启动另一个活动 493
34.7 小结 497
习题 497
第35章 更多的Android应用程序 498
35.1 处理Handler 498
35.2 MediaRecorder 502
35.3 异步任务 506
35.4 小结 511
习题 511
附录A javac 512
附录B java 517
附录C jar 522
附录D NetBeans 526
附录E Eclipse 530