第1章 Java语言概述 1
1.1 Java语言及其特点 1
1.1.1 Java语言简介 1
1.1.2 Java的特点和开发应用范围 2
1.2 Java语言的编译和运行环境 3
1.2.1 Java语言与Java 平台 3
1.2.2 Java SE 3
1.2.3 Java的运行环境 4
1.2.4 Java的开发环境 4
1.3 创建简单的Java程序 5
1.3.1 Hello World程序 5
1.3.2 代码分析 5
1.3.3 编译和运行结果 5
1.4 Java程序的基本结构 6
1.4.1 程序结构 6
1.4.2 包 7
1.4.3 类和对象 11
1.4.4 main方法 12
1.4.5 注释 13
1.4.6 Java编码规则 14
第2章 数据类型、变量和常量 15
2.1 标识符 15
2.1.1 Java标识符和关键字 15
2.1.2 Java命名规则 16
2.2 数据类型 16
2.2.1 简单类型 17
2.2.2 引用类型 17
2.2.3 装箱和拆箱 17
2.3 变量 18
2.3.1 变量的声明和赋值 18
2.3.2 变量的作用域 20
2.4 常量 21
2.4.1 文本常量 21
2.4.2 整型常量 21
2.4.3 浮点数类型常量 22
2.4.4 布尔类型常量 22
2.4.5 字符类型常量 22
2.4.6 字符串类型常量 23
2.4.7 null类型常量 23
2.4.8 用户声明常量 23
2.5 预定义数据类型 24
2.5.1 整数类型 24
2.5.2 浮点类型 26
2.5.3 布尔类型 27
2.5.4 字符类型 28
2.5.5 String数据类型 29
2.6 类型转换 30
2.6.1 自动类型转换 30
2.6.2 强制类型转换 32
第3章 运算符、表达式和语句 33
3.1 运算符 33
3.1.1 算术运算符 34
3.1.2 关系运算符 37
3.1.3 逻辑运算符 39
3.1.4 字符串运算符 41
3.1.5 位运算符 41
3.1.6 赋值运算符 43
3.1.7 条件运算符 45
3.1.8 其他运算符 46
3.1.9 运算符优先级 47
3.2 表达式 49
3.2.1 表达式的组成 49
3.2.2 表达式的书写规则 49
3.3 语句 50
第4章 程序流程和异常处理 52
4.1 顺序结构 52
4.2 选择结构 53
4.2.1 if语句 53
4.2.2 switch语句 61
4.3 循环结构 63
4.3.1 for循环 63
4.3.2 while循环 66
4.3.3 do...while循环 67
4.3.4 for each循环 69
4.3.5 循环的嵌套 70
4.4 跳转语句 71
4.4.1 break语句 71
4.4.2 continue语句 72
4.4.3 return语句 73
4.5 异常处理 74
4.5.1 异常处理概述 74
4.5.2 异常类 75
4.5.3 抛出异常 78
4.5.4 捕获处理异常 79
4.6 Java断言处理 85
4.6.1 Java断言处理概述 85
4.6.2 assert语句和AssertionError类 86
4.6.3 启用/禁用断言 87
4.6.4 断言编译注意事项 87
第5章 数组 90
5.1 数组概述 90
5.1.1 数组的声明 90
5.1.2 数组的实例化和初始化 91
5.1.3 数组的基本访问操作 91
5.2 一维数组 92
5.2.1 一维数组的声明、实例化和初始化 92
5.2.2 一维数组的基本访问操作 93
5.3 多维数组 94
5.3.1 多维数组的声明、实例化和初始化 94
5.3.2 多维数组的基本访问操作 96
5.4 交错数组 98
5.5 匿名数组 100
5.6 数组的应用举例 101
5.6.1 数组元素的求和、最值 101
5.6.2 数组的排序 102
5.6.3 数组元素的插入 105
5.6.4 数组元素的删除 106
5.6.5 矩阵的基本操作 107
5.7 Java类库中操作数组的类和方法 108
5.7.1 java.util.Arrays 108
5.7.2 System.arraycopy 110
5.7.3 数组名.clone() 111
第6章 类和对象 113
6.1 面向对象概述 113
6.1.1 对象 113
6.1.2 封装 113
6.1.3 继承 114
6.1.4 多态性 114
6.2 类和对象概述 114
6.2.1 类的声明 114
6.2.2 创建和使用对象 117
6.3 类的成员 119
6.3.1 数据成员 119
6.3.2 函数成员 119
6.3.3 静态成员和实例成员 119
6.3.4 this关键字 121
6.4 字段 121
6.4.1 字段的声明和访问 121
6.4.2 静态字段和实例字段 122
6.4.3 常量字段 123
6.4.4 volatile字段和transient字段 124
6.5 方法 124
6.5.1 方法的声明和调用 124
6.5.2 参数的传递 125
6.5.3 方法的重载 128
6.5.4 静态方法和实例方法 129
6.5.5 strictfp方法 130
6.5.6 递归 131
6.6 对象构造 131
6.6.1 构造方法 131
6.6.2 私有构造方法 133
6.6.3 静态初始化代码块 134
6.6.4 实例初始化代码块 134
6.6.5 字段的初始化顺序 134
6.7 类成员访问修饰符 136
6.8 嵌套类 139
6.8.1 嵌套顶级类 139
6.8.2 实例内部类 140
6.8.3 本地内部类 142
6.8.4 匿名内部类 142
6.9 Object类和Class类 143
6.9.1 Object类和通用方法 143
6.9.2 Class类和反射技术 144
6.10 对象的生命周期 146
6.10.1 对象的创建 146
6.10.2 对象的使用 146
6.10.3 对象的销毁 147
第7章 继承和多态 148
7.1 继承概述 148
7.1.1 继承的概念 148
7.1.2 继承的类型 148
7.1.3 继承的层次关系 149
7.2 继承 149
7.2.1 派生类的声明 149
7.2.2 super关键字 149
7.2.3 类成员的继承 150
7.2.4 构造方法的继承和调用 152
7.2.5 类成员变量的隐藏 154
7.2.6 类方法的重写 155
7.2.7 抽象类和抽象方法 157
7.2.8 密封类和密封方法 160
7.3 接口 161
7.3.1 接口的声明 161
7.3.2 接口的成员 162
7.3.3 接口的实现 162
7.3.4 接口的继承 163
7.4 多态 165
7.4.1 多态的概念 165
7.4.2 通过继承实现多态性 165
7.4.3 通过方法重载实现多态性 167
7.4.4 通过方法重写实现多态性 168
7.4.5 多态性综合举例 170
第8章 枚举类型和注解类型 175
8.1 枚举 175
8.1.1 枚举类型概述 175
8.1.2 枚举的声明和使用 175
8.1.3 枚举类的成员方法 178
8.1.4 枚举类综合举例 178
8.2 注解类型 179
8.2.1 注解类型概述 179
8.2.2 预定义注解类型 180
8.2.3 自定义注解类型 184
8.2.4 使用反射访问注解类型 187
8.2.5 注解类型综合举例 188
第9章 泛型 191
9.1 泛型的基本概念 191
9.1.1 引例ArrayList 191
9.1.2 引例ArrayL.ist<E> 192
9.1.3 泛型概述 193
9.2 泛型的定义 194
9.2.1 泛型类 194
9.2.2 泛型接口 196
9.2.3 泛型方法 196
9.2.4 泛型参数的约束 199
9.2.5 泛型与子类 200
9.2.6 通配符 200
9.3 泛型和继承 203
9.3.1 泛型类的继承设计准则 203
9.3.2 泛型接口的继承设计准则 205
9.4 泛型的使用 206
9.4.1 创建泛型类的对象 206
9.4.2 泛型类的类型检查 206
9.4.3 泛型类的类型转换 207
9.4.4 类型擦除和泛型类对象的类 207
9.4.5 与遗留代码交互 208
第10章 多线程编程技术 209
10.1 线程处理概述 209
10.1.1 进程和线程 209
10.1.2 线程的优缺点 209
10.2 创建多线程应用程序 210
10.2.1 Java应用程序主线程 210
10.2.2 创建和启动新线程 210
10.3 线程状态和生命周期 213
10.3.1 线程状态及其转换图 213
10.3.2 线程的创建 214
10.3.3 线程的属性设置和获取 214
10.3.4 线程的启动、停止、挂起和唤醒 214
10.3.5 休眠线程sleep() 214
10.3.6 线程让步yield() 214
10.3.7 线程加入join() 215
10.3.8 中断线程interrupt() 216
10.3.9 终止线程 216
10.4 用户线程和Daemon线程 217
10.5 线程优先级和线程调度 219
10.6 线程组 220
10.7 线程同步 221
10.7.1 线程同步处理 221
10.7.2 使用synchronized同步方法 222
10.7.3 使用synchronized同步代码块 223
10.7.4 线程间通信wait()、notify()和notifyAll() 225
10.8 java.util.Timer和java.util.TimerTask 228
第11章 数值、日期和字符串处理 232
11.1 数值处理 232
11.1.1 Math类和数学函数 232
11.1.2 Random类和随机函数 235
11.1.3 BigInteger类和任意精度整数 237
11.1.4 BigDecimal类和任意精度浮点数 241
11.1.5 数值格式化输出NumberFormat和DecimalFormat 245
11.2 日期和时间处理 248
11.2.1 java.util.Date类 248
11.2.2 java.util.Calendar类和GregorianCalendar类 249
11.2.3 java.text.DateFormat类和SimpleDateFormat类 251
11.3 字符串处理 253
11.3.1 String类 253
11.3.2 StringBuilder类和StringBuffer类 257
11.4 正则表达式 260
11.4.1 正则表达式语言 261
11.4.2 正则表达式类及应用举例 263
第12章 输入/输出流和文件 267
12.1 输入/输出流概述 267
12.1.1 流的基本概念 267
12.1.2 java.io中主要类的继承关系 268
12.1.3 I/O流的四大抽象类 270
12.2 磁盘、目录和文件的基本操作 270
12.2.1 java.io.File类概述 270
12.2.2 磁盘分区的基本操作 271
12.2.3 文件和目录的基本操作 272
12.3 字节流的写入和读取 279
12.3.1 二进制文件的写入/读取 279
12.3.2 基本Java数据类型的写入/读取 282
12.3.3 使用字节缓冲流提高写入/读取效率 285
12.4 字符流的写入和读取 288
12.4.1 文本文件的写入/读取 288
12.4.2 字符数据的写入/读取 290
12.4.3 使用字符缓冲流提高写入/读取效率 293
12.5 随机文件的访问 296
12.5.1 RandomAccessFile概述 296
12.5.2 创建RandomAccessFile对象 296
12.5.3 随机文件的读取 296
12.5.4 随机文件的写入 297
12.5.5 随机文件的定位 297
12.5.6 随机文件的关闭 297
12.6 对象序列化 298
12.6.1 对象序列化概述 298
12.6.2 对象输出流 298
12.6.3 对象输入流 299
12.7 控制台I/O 300
12.7.1 System.in/System.out/System.err 300
12.7.2 I/O重定向 301
12.7.3 java.util.Scanner 302
第13章 集合和数据结构 305
13.1 Java平台集合框架 305
13.2 集合框架中的接口 306
13.2.1 接口的继承关系 306
13.2.2 Collection接口 307
13.2.3 List接口 308
13.2.4 Set接口 309
13.2.5 Queue接口 309
13.2.6 Map接口 311
13.2.7 对象排序 311
13.2.8 SortedSet接口 314
13.2.9 SortedMap接口 314
13.3 集合框架中的算法 315
13.3.1 Collections类 315
13.3.2 排序 315
13.3.3 混排 315
13.3.4 常规数据操作算法 316
13.3.5 查找 317
13.3.6 极值 318
13.3.7 其他算法 319
13.3.8 封装器 319
13.4 列表 320
13.4.1 数组列表 320
13.4.2 链表 322
13.5 集 324
13.5.1 散列集 324
13.5.2 树集 325
13.5.3 链表散列集 326
13.6 队列 328
13.7 映射表 331
13.7.1 散列映射表 331
13.7.2 树映射表 332
13.7.3 链表散列映射表 334
13.8 遗留的集合类 335
13.8.1 向量 335
13.8.2 堆栈 335
13.8.3 哈希表 337
13.9 创建自定义集合类 337
第14章 数据库访问技术 339
14.1 关系数据库和SQL语言 339
14.1.1 数据库概念 339
14.1.2 关系数据库 339
14.1.3 SQL语言基础 341
14.1.4 本书使用的样例数据库 342
14.2 JDBC概述 343
14.2.1 JDBC的基本概念 343
14.2.2 JDBC的结构 344
14.2.3 JDBC驱动程序分类 344
14.2.4 JDBC API 346
14.3 使用JDBC访问数据库 347
14.3.1 加载JDBC驱动程序 347
14.3.2 创建与数据源的连接 349
14.3.3 执行数据库操作 351
14.3.4 处理SQL命令结果 356
14.4 使用JDBC访问数据库的示例 358
14.4.1 查询数据库表数据 358
14.4.2 插入数据库表数据 359
14.4.3 更新数据库表数据 360
14.4.4 删除数据库表数据 362
14.4.5 使用存储过程访问数据库 363
14.4.6 创建、删除、修改表结构 365
14.4.7 查询数据库的结构信息——元数据 366
第15章 网络编程和通信 370
15.1 网络编程的基本概念 370
15.1.1 网络基础知识 370
15.1.2 TCP/IP简介 370
15.1.3 IP地址和域名 371
15.1.4 统一资源定位器 372
15.2 InetAddress 372
15.2.1 创建InetAddress对象 372
15.2.2 获取InetAddress的信息 373
15.3 基于URL的网络编程 374
15.3.1 创建URL对象 374
15.3.2 解析URL对象 374
15.3.3 从URL读取网络资源 375
15.3.4 创建URLConnection并读取内容 375
15.4 基于Socket的网络编程 376
15.4.1 Socket概述 376
15.4.2 Socket类 377
15.4.3 ServerSocket类 378
15.4.4 简单的Client/Server程序设计 379
15.4.5 支持多客户的Client/Server程序设计 381
15.5 基于Datagram的网络编程 384
15.5.1 DatagramSocket和DatagramPacket 384
15.5.2 基于DatagramSocket的Client/Server程序设计 386
第16章 图形用户界面应用程序 389
16.1 Java图形用户界面概述 389
16.1.1 AWT简介 389
16.1.2 Swing简介 389
16.1.3 SWT简介 390
16.2 Swing概述 390
16.2.1 Swing组件 390
16.2.2 JFrame类 391
16.2.3 创建Swing应用程序的一般步骤 393
16.2.4 创建简单的Swing应用程序 394
16.3 布局管理器 395
16.3.1 布局管理器概述 395
16.3.2 FlowLayout 396
16.3.3 GridLayout 397
16.3.4 GridBagLayout 397
16.3.5 BorderLayout 401
16.3.6 BoxLayout 402
16.3.7 CardLayout 404
16.3.8 null布局 406
16.4 AWT事件处理 407
16.4.1 事件处理机制 407
16.4.2 事件类 409
16.4.3 事件监听器 410
16.5 Swing组件概述 418
16.6 面板容器 421
16.6.1 JPanel 421
16.6.2 JScrollPane 421
16.6.3 JTabbedPane 421
16.7 常用Swing组件 423
16.7.1 JLabel 423
16.7.2 JButton 423
16.7.3 JTextField 425
16.7.4 JPasswordField 426
16.7.5 JTextArea 426
16.7.6 JRadioButton 429
16.7.7 JCheckBox 429
16.7.8 JList 432
16.7.9 JComboBox 435
16.7.10 Timer 436
16.7.11 JSlider 438
16.7.12 JSpinner 440
16.7.13 JProgressBar 443
16.7.14 JTable 444
16.7.15 JTree 446
16.7.16 JEditorPane和JTextPane 449
16.8 通用对话框 451
16.8.1 JOptionPane对话框 451
16.8.2 JFileChooser对话框 453
16.8.3 JColorChooser对话框 454
16.8.4 通用对话框应用举例 455
16.8.5 自定义对话框 458
16.9 菜单和工具栏 460
16.9.1 菜单相关组件 460
16.9.2 创建主菜单 464
16.9.3 创建上下文菜单 467
16.9.4 JToolBar 468
16.9.5 菜单和工具栏应用举例:文本编辑器 470
16.10 图形绘制 474
16.10.1 图形绘制概述 474
16.10.2 图形上下文设置 474
16.10.3 绘制字符串 475
16.10.4 绘制图形和图像 475
16.10.5 Java 2D简介 478
16.11 Swing与线程 484
16.11.1 Swing事件派发线程 484
16.11.2 SwingUtilities的invokeLater和invokeAndWait方法 486
16.12 Swing外观 488
16.13 Toolkit实用工具包 490