第1篇 Java基础知识入门
第1章 Java的开发运行环境 2
1.1 Java的运行环境与虚拟机 2
1.2 Java的开发环境 4
1.2.1 JDK的安装 4
1.2.2 如何设置系统环境变量 6
1.2.3 编译命令的使用 8
1.2.4 解释执行命令的使用 10
1.2.5 UltraEdit的使用 11
1.3 一个简单的Java应用程序 14
1.4 一个简单的Java小程序 16
1.5 本章小结 18
第2章 Java语言基础 19
2.1 Java语言的特点 19
2.2 Java程序的构成 21
2.3 数据类型 23
2.3.1 基本数据类型 23
2.3.2 常量 25
2.3.3 变量 26
2.3.4 整型数据 27
2.3.5 浮点型数据 29
2.3.6 字符型数据 30
2.3.7 布尔型数据 32
2.3.8 变量赋初值 33
2.3.9 变量的作用域 34
2.3.10 数据类型转换 34
2.4 运算符与表达式 37
2.4.1 算术运算符和算术表达式 38
2.4.2 关系运算符和关系表达式 43
2.4.3 逻辑运算符和逻辑表达式 44
2.4.4 条件运算符和条件表达式 48
2.4.5 位运算符和位运算表达式 50
2.4.6 赋值运算符和赋值表达式 53
2.4.7 表达式的求值顺序 55
2.5 流程控制语句 58
2.5.1 三种基本控制结构 58
2.5.2 表达式语句和空语句 59
2.5.3 块语句 60
2.5.4 if~else分支语句 61
2.5.5 多路分支switch~case语句 69
2.5.6 当型循环while语句 71
2.5.7 直到型循环do~while语句 72
2.5.8 当型循环for语句 74
2.5.9 循环的嵌套 78
2.5.10 跳转语句break 80
2.5.11 跳转语句continue 82
2.6 程序文本的风格 84
2.6.1 注释 84
2.6.2 程序的格式编排 87
2.7 基础语法实战演习 88
2.7.1 判断闰年 88
2.7.2 求最大公约数和最小公倍数 89
2.7.3 Fibonacci数列 90
2.7.4 逆向输出数字 91
2.7.5 求水仙花数 92
2.7.6 输出图形 93
2.7.7 输出九九口诀表 94
2.8 本章小结 95
第2篇 Java面向对象编程
第3章 对象和类 98
3.1 面向对象的基本概念 98
3.1.1 对象 98
3.1.2 类 99
3.1.3 消息 101
3.1.4 面向对象的4个基本特征 101
3.2 类与对象 104
3.2.1 类的基本结构 104
3.2.2 类的声明 104
3.2.3 创建类体 105
3.2.4 对象的生命周期 106
3.2.5 对象的创建 106
3.2.6 对象的使用 108
3.2.7 对象的释放和垃圾收集机制 108
3.3 成员变量的定义与使用 109
3.3.1 成员变量的定义 109
3.3.2 成员变量的访问权限 110
3.3.3 实例成员变量和静态成员变量 114
3.4 方法的定义和实现 116
3.4.1 方法的声明 117
3.4.2 创建方法体与return语句 117
3.4.3 局部变量和成员变量的区别 119
3.4.4 方法的访问权限 121
3.5 方法的调用 121
3.5.1 方法调用的形式 121
3.5.2 方法调用的参数 123
3.5.3 隐含参数this 127
3.6 构造方法 128
3.6.1 无参数构造方法的定义和使用 129
3.6.2 带参数构造方法的定义和使用 131
3.6.3 this关键字和构造方法的调用 132
3.7 静态方法 133
3.7.1 静态方法的声明和定义 134
3.7.2 静态方法和实例方法的区别 134
3.7.3 静态代码块 136
3.7.4 再论静态成员变量 137
3.8 main()方法和命令行参数 139
3.9 结束方法 141
3.10 本地方法 141
3.11 本章小结 144
第4章 继承与多态 145
4.1 继承的基本原理 145
4.2 子类对父类的继承 146
4.3 属性隐藏和方法的覆盖 148
4.3.1 属性的隐藏 148
4.3.2 方法的覆盖 151
4.4 构造方法的继承 154
4.5 super的使用 156
4.5.1 用super引用父类的成员 156
4.5.2 使用super调用父类的构造方法 157
4.6 继承的内部处理 158
4.7 多态的基本概念 159
4.8 重载 159
4.8.1 普通方法的重载 160
4.8.2 构造方法的重载 161
4.8.3 重载的解析 163
4.8.4 重载与覆盖的区别 165
4.9 运行时多态 165
4.9.1 实例方法的运行时多态 165
4.9.2 成员变量运行时的表现 167
4.9.3 静态方法运行时的表现 169
4.10 抽象类与抽象方法 170
4.10.1 抽象方法的声明 170
4.10.2 抽象类的定义 170
4.10.3 抽象方法与回调函数 171
4.11 最终类与最终方法 173
4.12 接口与多重继承 174
4.12.1 接口的定义 174
4.12.2 接口的继承 175
4.12.3 接口的实现 177
4.13 内部类 179
4.13.1 内部类的定义 179
4.13.2 内部类访问外部类的成员 182
4.13.3 内部类之间的相互使用 185
4.13.4 在外部使用内部类 186
4.13.5 匿名内部类 187
4.13.6 内部类的作用 188
4.14 包 189
4.14.1 包的创建 189
4.14.2 包的使用 191
4.14.3 JAR文件的创建和使用 193
4.14.4 JDK中的常用包 195
4.15 本章小结 196
第3篇 Java数据处理
第5章 数组与字符串 200
5.1 数组 200
5.1.1 一维数组的声明 200
5.1.2 一维数组的创建 201
5.1.3 一维数组的使用 202
5.1.4 二维数组的声明 204
5.1.5 二维数组的创建 205
5.1.6 二维数组的使用 207
5.1.7 for~each循环 208
5.1.8 应用程序示例1——数组排序 209
5.1.9 应用程序示例2——杨辉三角 212
5.2 字符串 213
5.2.1 String对象的声明 213
5.2.2 String对象的创建 214
5.2.3 String对象的使用 214
5.2.4 String类型的数组 216
5.2.5 StringBuffer对象的声明 217
5.2.6 StringBuffer对象的创建 217
5.2.7 StringBuffer对象的使用 218
5.3 本章小结 219
第6章 Java的异常处理 220
6.1 异常的基本概念和作用 220
6.2 Java的异常处理机制 221
6.3 异常类的层次结构 222
6.3.1 运行时异常 222
6.3.2 检查型异常 223
6.3.3 自定义异常 224
6.4 捕获和处理异常 224
6.5 抛出异常 228
6.6 try-catch-finally语句的嵌套 231
6.7 用户自定义异常 234
6.8 使用异常来实现键盘输入 235
6.9 本章小结 236
第7章 Java的输入和输出 237
7.1 文件和输入输出流 237
7.2 InputStream类和OutputStream类的使用 238
7.2.1 InputStream中的方法 238
7.2.2 OutputStream中的方法 239
7.2.3 文件输入流FileInputStream 239
7.2.4 文件输出流FileOutputStream 239
7.2.5 保存用户输入到文件 240
7.2.6 显示文件内容 241
7.2.7 文件的复制 243
7.2.8 顺序输入流 244
7.2.9 管道输入输出流 246
7.2.10 过滤输入输出流 248
7.3 Reader和Writer类使用 249
7.3.1 InputStreamReader类中的方法 249
7.3.2 OutputStreamWriter类中的方法 250
7.3.3 从键盘输入 250
7.3.4 文件复制 251
7.4 文件属性处理 252
7.4.1 File类中的方法 252
7.4.2 File类使用示例——文件列表 253
7.5 随机访问文件 254
7.5.1 RandomAccessFile类中的方法 254
7.5.2 RandomAccessFile类使用示例——文件加密 256
7.6 控制台输入和输出 257
7.6.1 控制台输入类Scanner 257
7.6.2 格式化输出printf 258
7.7 序列化 261
7.8 本章小结 264
第4篇 Java中的高级技术
第8章 Java的多线程机制 266
8.1 线程的概念 266
8.1.1 多线程的特点 266
8.1.2 线程的状态 267
8.2 Thread类 268
8.2.1 Thread类的构造方法 268
8.2.2 Thread类的常用方法 268
8.3 多线程程序的编写 269
8.3.1 利用Thread的子类创建线程 270
8.3.2 实现Runnable接口创建线程 272
8.3.3 使用isAlive()和join()等待子线程结束 273
8.3.4 设置线程优先级 275
8.4 线程的通信与协调 277
8.4.1 线程的互斥 277
8.4.2 线程的同步 279
8.4.3 暂停、恢复和停止线程 282
8.4.4 生产者-消费者问题实例 284
8.5 本章小结 287
第9章 运行时类型识别 288
9.1 RTTI的作用 288
9.2 用Class类来加载对象 289
9.3 使用getClass()方法获取类信息 290
9.4 使用类标记 292
9.5 使用关键字instanceof判断所属类 292
9.6 利用反射获取运行时类信息 293
9.6.1 使用isInstance()方法判断所属类 294
9.6.2 获取成员方法信息 295
9.6.3 获取构造方法信息 296
9.6.4 获取类的成员属性 297
9.6.5 根据方法的名称来执行方法 299
9.6.6 创建新的对象 300
9.6.7 改变属性的值 301
9.6.8 使用数组 301
9.7 本章小结 303
第10章 泛型 304
10.1 泛型的本质 304
10.2 一个关于泛型的简单例子 305
10.3 带两个类型参数的泛型类 308
10.4 有界类型 309
10.5 通配符参数 311
10.6 泛型方法 313
10.7 泛型接口 315
10.8 泛型类的继承 317
10.8.1 以泛型类为父类 317
10.8.2 以非泛型类为父类 319
10.8.3 运行时类型识别 320
10.8.4 强制类型转换 321
10.8.5 继承规则 322
10.9 擦拭 323
10.10 擦拭带来的错误 324
10.10.1 静态成员共享问题 325
10.10.2 重载冲突问题 325
10.10.3 接口实现问题 326
10.11 泛型的局限 326
10.11.1 不能使用基本类型 326
10.11.2 不能使用泛型类异常 326
10.11.3 不能使用泛型数组 327
10.11.4 不能实例化参数类型对象 327
10.12 本章小结 328
第11章 集合 329
11.1 集合接口与抽象类 329
11.1.1 Collection接口 330
11.1.2 Iterator接口 330
11.1.3 AbstractCollection抽象类 331
11.1.4 几个常用术语 332
11.2 集合类的使用 333
11.2.1 顺序表(ArrayList)使用示例 333
11.2.2 链表(LinkedList)使用示例 336
11.2.3 优先队列(PriorityQueue)使用示例 340
11.2.4 哈希集合(HashSet)使用示例 343
11.2.5 哈希映射类(HashMap)使用示例 347
11.2.6 有序树(TreeSet)使用示例 349
11.2.7 有序树映射类(TreeMap)使用示例 353
11.2.8 枚举(Enum)使用示例 355
11.2.9 枚举集(EnumSet)使用示例 358
11.3 常用算法 361
11.3.1 Collections中的简单算法 361
11.3.2 排序 36211.3.3 二分查找 364
11.4 遗留的类和接口 366
11.4.1 Enumeration接口简介 366
11.4.2 向量类(Vector)使用示例 367
11.4.3 栈(Stack)使用示例 369
11.4.4 字典(Dictionary)简介 370
11.4.5 哈希表(Hashtable)简介 371
11.5 本章小结 371
第12章 类型包装器、自动装箱和元数据(注释) 372
12.1 类型包装器 37212.1.1 字符类型包装器 372
12.1.2 布尔类型包装器 373
12.1.3 数字类型包装器 373
12.2 自动装/拆箱 375
12.2.1 自动装箱与方法 375
12.2.2 表达式中的自动装/拆箱 376
12.2.3 布尔型和字符型包装器的自动装/拆箱 378
12.3 元数据 378
12.3.1 注释的基础知识 379
12.3.2 指定一个保留策略 380
12.3.3 使用反射在运行时获得注释 380
12.3.4 AnnotatedElement接口 383
12.3.5 使用默认值 383
12.3.6 标记注释 384
12.3.7 单成员注释 385
12.3.8 内置注释 386
12.3.9 使用注释的一些限制 390
12.4 本章小结 390
第13章 常用工具类 391
13.1 Runtime类的使用 391
13.1.1 内存管理 392
13.1.2 执行其他程序 393
13.2 System类的使用 395
13.2.1 利用currentTimeMillis()记录程序执行的时间 395
13.2.2 利用exit()退出虚拟机 396
13.2.3 获取和设置环境属性 397
13.3 Math类的使用 398
13.3.1 利用随机数求π值 398
13.3.2 利用三角函数求π值 400
13.3.3 利用换底公式求任意对数值 401
13.3.4 使用取整函数 401
13.4 Random类的使用 402
13.5 Date类和Calendar类的使用 404
13.5.1 Date类的简单使用 404
13.5.2 使用SimpleDateFormat格式化输出时间 405
13.5.3 Calendar类的特色 408
13.5.4 利用GregorianCalendar输出日历 411
13.6 Formatter类的使用 413
13.6.1 Formatter的简单使用 413
13.6.2 时间格式转换符详解 415
13.6.3 格式说明符语法图 417
13.7 正则表达式 417
13.7.1 正则表达式的作用 418
13.7.2 正则表达式的基本规则 418
13.7.3 正则表达式中的一些高级规则 421
13.7.4 正则表达式中的其他通用规则 424
13.7.5 使用技巧 425
13.8 Pattern类的使用 426
13.9 Matcher类的使用 428
13.9.1 匹配方法的使用 429
13.9.2 替换方法的使用 430
13.9.3 组匹配的使用 431
13.9.4 检验E-mail的合法性 432
13.10 本章小结 434
第5篇 桌面程序开发
第14章 GUI程序设计 436
第15章 多媒体程序设计 584
第16章 数据库的预备知识 642
第17章 Java对数据库编程 661
第7篇 Java网络程序开发
第18章 C/S网络程序设计 694
第19章 JSP程序设计 719
第8篇 即时通讯系统开发实例
第20章 系统分析和设计 800
第21章 服务器端功能模块的实现 812
第22章 客户端功能模块的实现 840