第1章 Java概述 2
1.1 Java语言简介 2
1.1.1 Java语言的产生 2
1.1.2 Java语言的版本变迁 2
1.1.3 Java语言特点 4
1.2 初识Java程序 6
1.2.1 Java程序的两种类型 6
1.2.2 Java程序的结构特点 6
1.3 Java开发与运行环境 7
1.3.1 使用JDK 7
1.3.2 使用IDE 10
1.4 Java语言与Java技术 12
1.5 怎么学习Java 12
1.5.1 入门之道 12
1.5.2 精通之路 14
1.6 小结 15
1.7 习题 16
第2章 Java语言基础语法 18
2.1 数据类型和运算符号 18
2.1.1 Java数据类型 18
2.1.2 标识符与关键字 23
2.1.3 运算符 25
2.2 输入输出 33
2.2.1 输入 33
2.2.2 输出 36
2.3 流程控制 38
2.3.1 顺序控制语句 38
2.3.2 选择控制语句 39
2.3.3 循环控制语句 51
2.3.4 选择控制语句与循环控制语句的嵌套 62
2.3.5 break语句与continue语句 62
2.4 数组 67
2.4.1 一维数组 67
2.4.2 二维数组 73
2.5 小结 78
2.6 习题 79
第3章 面向对象思想 81
3.1 从数据开始 81
3.1.1 类的角色 81
3.1.2 事物数据化 81
3.1.3 对象的特殊性 82
3.1.4 对象分类 83
3.1.5 对象处理 84
3.2 面向对象与面向过程 86
3.2.1 问题与解决问题的思维方式 86
3.2.2 面向对象的内涵 90
3.2.3 面向对象和面向过程思想的关系 93
3.3 面向对象语言的三大特性 93
3.3.1 封装性 94
3.3.2 继承性 94
3.3.3 多态性 94
3.4 UML2.0简介 95
3.4.1 UML概述 95
3.4.2 类图 96
3.4.3 对象图 96
3.5 本章小结 96
3.6 习题 97
第4章 类设计基础 99
4.1 类 99
4.1.1 封装和隐藏 99
4.1.2 类的定义 99
4.1.3 域的定义 100
4.1.4 方法的定义 100
4.1.5 方法的重载 103
4.1.6 方法的递归 104
4.2 对象 106
4.2.1 对象的声明与创建 106
4.2.2 对象的使用 107
4.2.3 构造方法 109
4.2.4 对象的内存模型 110
4.2.5 this 111
4.2.6 参数传递 113
4.2.7 对象数组 117
4.2.8 static关键字 120
4.2.9 @Deprecated注解 125
4.3 访问权限 127
4.3.1 private修饰成员 127
4.3.2 public修饰成员 127
4.3.3 protected修饰成员 129
4.3.4 默认的访问权限 130
4.3.5 public修饰类 130
4.4 对象组合 130
4.5 嵌套类 136
4.6 Java的包 138
4.6.1 package语句 139
4.6.2 import语句 140
4.6.3 import static语句 140
4.7 小结 142
4.8 习题 143
第5章 类设计进阶 146
5.1 类的继承 146
5.1.1 子类的定义 146
5.1.2 域的隐藏和方法的重写 150
5.1.3 super关键字 152
5.1.4 Object类 153
5.1.5 instanceof关键字 155
5.1.6 子类的可访问性 156
5.1.7 final关键字 158
5.1.8 @Override注解 160
5.1.9 继承与组合的比较 160
5.2 类的多态 163
5.2.1 对象的赋值兼容规则 163
5.2.2 多态的实现 164
5.2.3 匿名类 168
5.3 抽象类与接口 169
5.3.1 抽象类 169
5.3.2 接口 171
5.3.3 抽象类与接口的比较 173
5.4 类及类间关系的UML表示 174
5.4.1 类的表示 174
5.4.2 对象的表示 176
5.4.3 接口的表示 176
5.4.4 类间关系及UML表示 176
5.5 小结 179
5.6 习题 180
第6章 异常处理机制 182
6.1 什么是异常 182
6.1.1 异常的概念 182
6.1.2 异常的类型 182
6.1.3 程序中的常见异常类型 183
6.2 异常处理 185
6.2.1 异常处理机制 185
6.2.2 try-catch-finally异常处理语句 186
6.2.3 throw异常抛出语句 189
6.2.4 自定义异常类 190
6.2.5 方法声明抛出异常 191
6.2.6 finally和return 193
6.3 小结 193
6.4 习题 193
第7章 基础类库 195
7.1 为类分类 195
7.1.1 Java类包 195
7.1.2 包和类层次体系 196
7.1.3 在继承与创新中发展 196
7.1.4 哪些是常用的类 197
7.2 字符串类与字符串处理 197
7.2.1 字符串处理问题 197
7.2.2 字符串类 199
7.2.3 Scanner类与字符串 204
7.3 正则表达式与字符串处理 205
7.3.1 正则表达式 205
7.3.2 Pattern类和Matcher类 207
7.4 数学类与数学计算 207
7.5 日期、日历和时间类 211
7.5.1 日期类Date 211
7.5.2 日历类Calendar 212
7.5.3 本地日期和时间类 213
7.6 包装类 215
7.7 系统类 216
7.7.1 System类 216
7.7.2 Runtime类 217
7.7.3 Java垃圾回收机制 218
7.8 其他常用类 219
7.8.1 Objects类与Object类 219
7.8.2 Class类和反射机制 222
7.9 几个重要的接口 223
7.9.1 Observer接口和Observable类 223
7.9.2 Comparator与Comparable接口 225
7.10 小结 228
7.11 习题 228
第8章 集合类 230
8.1 泛型 230
8.1.1 什么是泛型 230
8.1.2 泛型类的定义 232
8.1.3 泛型接口的定义 234
8.1.4 泛型方法的定义 234
8.1.5 泛型参数的限定 235
8.2 集合类总览 237
8.2.1 集合类及其特点 237
8.2.2 Java的集合类 237
8.3 List集合 239
8.3.1 List接口 239
8.3.2 ArrayList集合类 240
8.3.3 LinkedList集合类 242
8.4 Set集合 243
8.4.1 Set接口 244
8.4.2 HashSet集合类 244
8.4.3 TreeSet集合类 245
8.5 Map集合 247
8.5.1 Map接口 247
8.5.2 HashMap集合类 248
8.5.3 TreeMap集合类 249
8.6 集合元素的操作 250
8.6.1 使用Iterator迭代器 250
8.6.2 使用 Collections 252
8.6.3 使用Lambda表达式 255
8.7 小结 261
8.8 习题 261
第9章 GUI与事件处理机制 263
9.1 AWT 263
9.1.1 AWT组件 263
9.1.2 AWT容器 265
9.2 swing 265
9.2.1 swing组件 266
9.2.2 swing容器 273
9.2.3 布局管理器 277
9.3 理解事件及事件处理机制 287
9.3.1 理解事件 287
9.3.2 ActionEvent事件 288
9.3.3 MouseEvent事件 291
9.3.4 KeyEvent事件 293
9.3.5 ItemEvent事件 295
9.3.6 FocusEvent事件 298
9.3.7 DocumentEvent事件 298
9.3.8 窗口事件 299
9.4 小结 300
9.5 习题 301
第10章 Java多线程机制 303
10.1 线程基本概念 303
10.1.1 进程与线程 303
10.1.2 线程的执行 303
10.1.3 线程的作用 304
10.1.4 进程与线程的区别 304
10.2 线程的创建方法 305
10.2.1 扩展Thread类 305
10.2.2 实现接口Runnable 306
10.2.3 用Callable和FutureTask定义线程 307
10.3 线程状态及转换 308
10.3.1 线程的状态 308
10.3.2 线程状态转换 308
10.4 线程调度 309
10.4.1 线程栈模型 309
10.4.2 线程优先级 309
10.5 线程常用方法 311
10.5.1 常用方法 311
10.5.2 线程让步 313
10.5.3 线程联合 314
10.5.4 守护线程 315
10.5.5 线程中断 317
10.6 线程同步与锁机制 319
10.6.1 线程同步概述 319
10.6.2 线程同步举例 321
10.6.3 线程安全 323
10.6.4 线程死锁 325
10.7 线程的交互 327
10.7.1 线程交互概述 327
10.7.2 wait()方法和notify()方法 327
10.8 小结 329
10.9 习题 329
第11章 I/O流类 332
11.1 理解I/O流的作用 332
11.1.1 什么是流 332
11.1.2 流的分类 332
11.2 File类 334
11.2.1 文件对象与属性 334
11.2.2 目录操作 336
11.2.3 文件的操作 337
11.2.4 Scanner类访问文件 339
11.3 常用I/O流类 340
11.3.1 字节流 340
11.3.2 字符流 344
11.3.3 数据流 346
11.3.4 缓冲流 347
11.3.5 随机流 350
11.4 对象串行化 352
11.4.1 对象流 352
11.4.2 对象的串行化 353
11.4.3 对象输入流与对象输出流 353
11.5 NIO 355
11.5.1 NIO与IO 355
11.5.2 NIO的主要组成部分 356
11.5.3 Buffers 357
11.5.4 Channels 359
11.6 小结 362
11.7 习题 363
第12章 数据库编程 365
12.1 MySQL数据库与SQL命令 365
12.1.1 MySQL数据库 及安装 365
12.1.2 SQL命令 368
12.1.3 从文件导入数据 371
12.2 连接数据库 372
12.2.1 四种驱动类型 372
12.2.2 JDBC驱动程序与连接(类型Ⅳ) 373
12.2.3 使用JDBC-ODBC桥 374
12.2.4 无数据源方式 376
12.3 JDBC编程 378
12.3.1 JDBC API 378
12.3.2 使用SQL语句操作数据 379
12.3.3 利用可更新结果集操作数据 382
12.3.4 使用RowSet查询结果 383
12.3.5 编译预处理 385
12.3.6 连接池简介 387
12.4 什么是DAO 388
12.5 小结 392
12.6 习题 392
第13章 网络应用编程初步 394
13.1 基础知识 394
13.1.1 网络基本概念 394
13.1.2 TCP和UDP协议 395
13.1.3 URL 395
13.2 常用类 396
13.2.1 URL类 396
13.2.2 InetAddress类 397
13.2.3 TCP通信类 397
13.2.4 UDP通信类 398
13.3 基于TCP的编程 400
13.4 基于UDP的编程 403
13.5 基于NIO的编程 405
13.5.1 SocketChannel类 405
13.5.2 ServerSocketChannel类 405
13.5.3 Selector类 405
13.5.4 SelectionKey类 406
13.5.5 应用举例 406
13.6 小结 412
13.7 习题 412
第14章 综合实践 414
14.1 谈谈设计 414
14.1.1 设计与方法 414
14.1.2 好的设计 414
14.2 谈谈重构 415
14.3 实践题目 421
14.3.1 学生成绩管理软件 421
14.3.2 表格驱动的计算 421
14.3.3 电梯运行模拟 422