第1章 Java语言概述 1
1.1 Java的诞生 1
1.2 Java的特点 2
1.2.1 简单 2
1.2.2 面向对象 2
1.2.3 平台无关 2
1.2.4 多线程 4
1.2.5 安全 4
1.2.6 动态 4
1.3 安装JDK 4
1.3.1 三种平台简介 5
1.3.2 安装Java SE平台 5
1.4 Java程序的开发步骤 7
1.5 一个简单的Java应用程序 8
1.5.1 编写源文件 8
1.5.2 编译 9
1.5.3 运行 10
1.6 联合编译 11
1.7 注释 13
1.8 编程风格 13
1.8.1 Allmans风格 14
1.8.2 Kernighan风格 14
1.9 小结 14
习题1 15
第2章 基本类型、数组和枚举类型 16
2.1 标识符和关键字 16
2.1.1 标识符 16
2.1.2 关键字 17
2.2 基本数据类型 17
2.2.1 逻辑类型 17
2.2.2 整数类型 17
2.2.3 字符类型 18
2.2.4 浮点类型 19
2.2.5 基本数据类型的转换 20
2.3 从命令行输入输出数据 22
2.3.1 输入基本型数据 22
2.3.2 输出基本型数据 22
2.4 数组 23
2.4.1 声明数组 23
2.4.2 创建数组 24
2.4.3 数组元素的使用 25
2.4.4 length的使用 26
2.4.5 数组的初始化 26
2.4.6 数组的引用 26
2.4.7 表示格式 27
2.4.8 复制数组 28
2.4.9 排序与二分查找 30
2.5 枚举类型 31
2.6 小结 33
习题2 33
第3章 运算符、表达式和语句 35
3.1 运算符与表达式 35
3.1.1 算术运算符与算术表达式 35
3.1.2 自增、自减运算符 36
3.1.3 算术混合运算的精度 36
3.1.4 关系运算符与关系表达式 36
3.1.5 逻辑运算符与逻辑表达式 37
3.1.6 赋值运算符与赋值表达式 37
3.1.7 位运算符 38
3.1.8 instanceof运算符 39
3.1.9 运算符综述 39
3.2 语句概述 40
3.3 if条件分支语句 40
3.3.1 if语句 40
3.3.2 if-else语句 41
3.3.3 if else if-else语句 43
3.4 switch开关语句 44
3.5 循环语句 45
3.5.1 for循环语句 45
3.5.2 while循环 46
3.5.3 do-while循环 47
3.6 break和continue语句 47
3.7 数组与for语句 48
3.8 枚举类型与for、switch语句 49
3.9 小结 51
习题3 51
第4章 类与对象 53
4.1 编程语言的几个发展阶段 53
4.1.1 面向机器语言 53
4.1.2 面向过程语言 53
4.1.3 面向对象语言 54
4.2 类 55
4.2.1 类声明 56
4.2.2 类体 56
4.2.3 成员变量和局部变量 56
4.2.4 方法 59
4.2.5 方法重载 60
4.2.6 构造方法 61
4.2.7 类方法和实例方法 61
4.2.8 几个值得注意的问题 62
4.3 对象 63
4.3.1 创建对象 63
4.3.2 使用对象 66
4.3.3 对象的引用和实体 68
4.4 参数传值 69
4.4.1 基本数据类型参数的传值 69
4.4.2 引用类型参数的传值 70
4.4.3 可变参数 73
4.4.4 有理数的类封装 75
4.5 对象的组合 78
4.6 static关键字 81
4.6.1 实例变量和类变量的区别 81
4.6.2 实例方法和类方法的区别 83
4.7 this关键字 84
4.7.1 在构造方法中使用this 84
4.7.2 在实例方法中使用this 85
4.8 包 86
4.8.1 包语句 86
4.8.2 有包名的类的存储目录 87
4.8.3 运行有包名的主类 87
4.9 import语句 89
4.9.1 引入类库中的类 89
4.9.2 引入自定义包中的类 90
4.9.3 使用无包名的类 92
4.9.4 避免类名混淆 92
4.10 访问权限 93
4.10.1 私有变量和私有方法 93
4.10.2 共有变量和共有方法 95
4.10.3 友好变量和友好方法 96
4.10.4 受保护的成员变量和方法 96
4.10.5 public类与友好类 97
4.11 基本类型的类包装 97
4.11.1 Double和Float类 98
4.11.2 Byte、Short、Integer和Long类 98
4.11.3 Character类 98
4.11.4 自动装箱与拆箱 99
4.12 反编译和文档生成器 100
4.12.1 javap反编译 100
4.12.2 javadoc制作文档 100
4.13 jar文件 102
4.14 小结 104
习题4 104
第5章 继承与接口 107
5.1 子类与父类 107
5.2 子类的继承性 108
5.2.1 子类和父类在同一包中的继承性 108
5.2.2 子类和父类不在同一包中的继承性 109
5.2.3 protected的进一步说明 110
5.3 子类对象的构造过程 110
5.4 成员变量的隐藏和方法重写 111
5.4.1 成员变量的隐藏 111
5.4.2 方法重写 112
5.5 super关键字 115
5.5.1 使用super调用父类的构造方法 115
5.5.2 使用super操作被隐藏的成员变量和方法 117
5.6 final关键字 118
5.6.1 final类 118
5.6.2 final方法 119
5.6.3 常量 119
5.7 对象的上转型对象 120
5.8 继承与多态 121
5.9 abstract类和abstract方法 122
5.9.1 abstract类的特点 122
5.9.2 abstract类与多态 125
5.10 接口 127
5.10.1 接口的声明与使用 127
5.10.2 理解接口 129
5.10.3 接口回调 131
5.10.4 接口与多态 131
5.10.5 abstract类与接口的比较 134
5.11 小结 134
习题5 135
第6章 内部类与异常类 137
6.1 内部类 137
6.2 匿名类 138
6.2.1 和类有关的匿名类 138
6.2.2 和接口有关的匿名类 139
6.3 异常类 140
6.3.1 try-catch语句 140
6.3.2 自定义异常类 141
6.4 断言 143
6.5 Class类 144
6.5.1 获取类的有关信息 144
6.5.2 使用Class实例化一个对象 145
6.6 小结 146
习题6 147
第7章 面向对象的几个基本原则 149
7.1 UML类图简介 149
7.1.1 类的UML图 149
7.1.2 接口 150
7.1.3 泛化关系 150
7.1.4 关联关系 151
7.1.5 依赖关系 151
7.1.6 实现关系 151
7.1.7 注释 151
7.2 面向抽象原则 152
7.2.1 抽象类和接口 152
7.2.2 面向抽象 154
7.3 开-闭原则 156
7.4 多用组合少用继承原则 157
7.4.1 继承与复用 157
7.4.2 组合与复用 157
7.4.3 组合和继承 158
7.5 高内聚低耦合原则 158
习题7 159
第8章 几个重要的设计模式 160
8.1 设计模式简介 160
8.1.1 什么是设计模式 160
8.1.2 学习设计模式的必要性 160
8.1.3 什么是框架 161
8.2 策略模式 162
8.2.1 概述 162
8.2.2 策略模式的定义 163
8.2.3 模式的结构 164
8.2.4 模式的使用 167
8.2.5 策略模式的优点 168
8.2.6 适合使用策略模式的情景 168
8.2.7 策略模式相对继承机制的优势 168
8.3 中介者模式 168
8.3.1 概述 168
8.3.2 中介者模式的定义 169
8.3.3 模式的结构 169
8.3.4 模式的使用 173
8.3.5 中介者模式的优点 173
8.3.6 适合使用中介者模式的情景 174
8.4 模板方法模式 174
8.4.1 概述 174
8.4.2 模板方法模式的定义 174
8.4.3 模式的结构 174
8.4.4 模式的使用 176
8.4.5 模板方法模式的优点 177
8.4.6 适合使用模板方法模式的情景 177
习题8 177
第9章 常用实用类 178
9.1 String类 178
9.1.1 构造字符串对象 178
9.1.2 String类的常用方法 179
9.1.3 字符串与基本数据的相互转化 183
9.1.4 对象的字符串表示 185
9.1.5 字符串与字符、字节数组 185
9.1.6 正则表达式及字符串的替换与分解 187
9.2 StringBuffer类 191
9.2.1 StringBuffer对象的创建 191
9.2.2 StringBuffer类的常用方法 192
9.3 StringTokenizer类 194
9.4 Date类 195
9.4.1 构造Date对象 195
9.4.2 日期格式化 195
9.5 Calendar类 197
9.6 Math类和BigInteger类 200
9.6.1 Math类 200
9.6.2 BigInteger类 200
9.7 DecimalFormat类 201
9.7.1 格式化数字 202
9.7.2 将格式化字符串转化为数字 203
9.8 Pattern类与Match类 204
9.8.1 模式对象 204
9.8.2 匹配对象 205
9.9 小结 206
习题9 206
第10章 Java Swing图形用户界面 209
10.1 Java Swing概述 209
10.2 窗口 210
10.2.1 JFrame常用方法 210
10.2.2 菜单条、菜单、菜单项 211
10.3 文本框 213
10.3.1 JTextField类的主要方法 214
10.3.2 文本框上的ActionEvent事件 215
10.3.3 内部类或匿名类实例做监视器 220
10.3.4 窗口做监视器 221
10.3.5 事件处理总结 223
10.3.6 文本框上的文档类型 223
10.4 密码框 225
10.5 按钮与标签 226
10.5.1 按钮 226
10.5.2 标签 230
10.6 菜单项 230
10.7 布局 231
10.7.1 FlowLayout布局 231
10.7.2 BorderLayout布局 232
10.7.3 CardLayout布局 233
10.7.4 GridLayout布局 235
10.7.5 BoxLayout布局 235
10.7.6 null布局 237
10.8 文本区 237
10.8.1 JTextArea类的主要方法 237
10.8.2 文本区上的DocumentEvent事件 239
10.9 选择性组件 241
10.9.1 选择框 241
10.9.2 JRadioButton单选按钮 242
10.9.3 下拉列表 243
10.10 容器 245
10.11 表格 247
10.12 树 249
10.13 Component类的常用方法 252
10.13.1 组件的颜色 252
10.13.2 组件的字体 252
10.13.3 组件的大小与位置 254
10.13.4 组件的激活与可见性 255
10.14 窗口事件 255
10.14.1 WindowListener接口 255
10.14.2 WindowAdapter适配器 256
10.15 鼠标事件 256
10.15.1 使用MouseListener接口处理鼠标事件 257
10.15.2 使用MouseMotionListener接口处理鼠标事件 259
10.16 焦点事件 261
10.17 键盘事件 261
10.17.1 使用KeyListener接口处理键盘事件 261
10.17.2 处理复合键 262
10.18 使用MVC结构 264
10.19 使用中介者模式 267
10.20 发布应用程序 270
10.21 小结 271
习题10 271
第11章 对话框 272
11.1 JDialog类 272
11.1.1 JDialog类的主要方法 272
11.1.2 对话框的模式 273
11.2 文件对话框 275
11.3 消息对话框 277
11.4 输入对话框 279
11.5 确认对话框 280
11.6 颜色对话框 282
11.7 小结 283
习题11 283
第12章 输入输出流 284
12.1 File类 285
12.1.1 文件的属性 285
12.1.2 目录 286
12.1.3 文件的创建与删除 287
12.1.4 运行可执行文件 287
12.2 文件字节流 288
12.2.1 文件字节输入流 288
12.2.2 文件字节输出流 289
12.2.3 关闭流 291
12.3 文件字符流 291
12.4 缓冲流 292
12.5 文件对话框 294
12.6 随机流 297
12.7 数组流 299
12.8 数据流 301
12.9 带进度条的输入流 302
12.10 对象流 303
12.11 序列化与对象克隆 305
12.12 文件锁 307
12.13 使用Scanner解析文件 309
12.14 小结 311
习题12 312
第13章 泛型与集合框架 314
13.1 泛型 314
13.1.1 泛型类声明 314
13.1.2 使用泛型类声明对象 315
13.1.3 泛型接口 316
13.2 链表 317
13.2.1 LinkedList<E>泛型类 318
13.2.2 常用方法 318
13.2.3 遍历链表 319
13.3 堆栈 325
13.4 散列映射 326
13.4.1 HashMap<K,V>泛型类 326
13.4.2 常用方法 326
13.4.3 遍历散列映射 327
13.4.4 基于散列映射的查询 327
13.5 树集 329
13.5.1 TreeSet<E>泛型类 329
13.5.2 节点的大小关系 329
13.5.3 TreeSet类的常用方法 329
13.6 树映射 331
13.7 自动装箱与拆箱 333
13.8 小结 333
习题13 334
第14章 JDBC数据库操作 335
14.1 Microsoft Access数据库管理系统 335
14.1.1 建立数据库 335
14.1.2 创建表 336
14.2 JDBC 336
14.3 连接数据库 337
14.3.1 连接方式的选择 337
14.3.2 建立JDBC-ODBC桥接器 338
14.3.3 ODBC数据源 338
14.3.4 建立连接 339
14.4 查询操作 340
14.4.1 顺序查询 341
14.4.2 随机查询 344
14.4.3 条件查询 347
14.4.4 排序查询 348
14.4.5 模糊查询 349
14.5 更新、添加与删除操作 350
14.6 查询Excel电子表格 352
14.7 使用预处理语句 353
14.7.1 预处理语句的优点 353
14.7.2 使用通配符 356
14.8 事务 358
14.8.1 事务及处理 358
14.8.2 JDBC事务处理步骤 359
14.9 CachedRowSetImpl类 360
14.10 小结 362
习题14 362
第15章 Java多线程机制 363
15.1 Java中的线程 364
15.1.1 程序、进程与线程 364
15.1.2 线程的状态与生命周期 365
15.1.3 线程调度与优先级 368
15.2 Thread的子类创建线程 368
15.3 使用Runnable接口 369
15.3.1 Runnable接口与目标对象 369
15.3.2 关于run方法中的局部变量 371
15.3.3 在线程中启动其他线程 372
15.4 线程的常用方法 373
15.5 GUI线程 376
15.6 线程同步 380
15.7 在同步方法中使用wait()、notify()和notifyAll()方法 383
15.8 计时器线程Timer 386
15.9 线程联合 388
15.10 守护线程 389
15.11 小结 390
习题15 391
第16章 Java网络基础 393
16.1 URL类 393
16.1.1 URL的构造方法 393
16.1.2 读取URL中的资源 394
16.1.3 显示URL资源中的html文件 395
16.1.4 处理超链接 397
16.2 InetAdress类 399
16.2.1 地址的表示 399
16.2.2 获取地址 399
16.3 套接字 400
16.3.1 套接字Socket 400
16.3.2 客户端的套接字对象 400
16.3.3 ServerSocket类 401
16.3.4 把套接字连接放在一个线程中 403
16.4 UDP数据报 407
16.4.1 发送数据包 408
16.4.2 接收数据包 408
16.5 广播数据报 412
16.6 Java远程调用 415
16.6.1 远程对象及其代理 415
16.6.2 RMI的设计细节 415
16.7 小结 419
习题16 419
第17章 Java Applet 420
17.1 Java Applet的结构 420
17.2 Java Applet的运行原理 420
17.3 在Java Applet中播放声音 423
17.4 网页传值 424
17.5 小结 425
习题17 425
参考文献 426