第1章 Java入门 1
本章术语 1
1.1认识Java 1
1.1.1认识编程语言 1
1.1.2Java的来历 2
1.1.3Java为什么流行 3
1.1.4Java的3个版本 5
1.1.5编程前的准备工作 5
1.2获取和安装JDK 5
1.2.1获取JDK 5
1.2.2安装JDK 6
1.2.3安装目录的介绍 7
1.2.4环境变量的设置 8
1.3开发第一个Java程序 9
1.3.1如何编写源代码 9
1.3.2如何将源代码编译成.class文件 10
1.3.3如何执行.class文件 11
1.3.4新手常见错误 12
1.4用Eclipse开发Java程序 13
1.4.1什么是Eclipse 13
1.4.2安装Eclipse 14
1.4.3如何建立项目 14
1.4.4如何开发Java程序 15
1.4.5如何维护项目 18
本章知识体系 20
第2章 程序设计基础之变量及其运算 21
本章术语 21
2.1认识变量 21
2.1.1什么是变量 21
2.1.2变量有哪些类型 22
2.2如何使用变量 23
2.2.1如何使用整型变量 23
2.2.2如何使用浮点型变量 24
2.2.3如何使用字符型变量 25
2.2.4如何使用布尔型变量 27
2.2.5基本数据类型之间的类型转换 28
2.2.6基本数据类型和字符串之间的转换 29
2.2.7变量的作用范围 30
2.3注释的书写 31
2.3.1单行注释 31
2.3.2多行注释 31
2.3.3文档注释 32
2.4Java中的运算 32
2.4.1算术运算 32
2.4.2赋值运算 34
2.4.3关系运算 35
2.4.4逻辑运算 36
2.4.5运算符的优先级 36
本章知识体系 37
第3章 程序设计基础之流程控制和数组 38
本章术语 38
3.1判断结构 38
3.1.1为什么需要判断结构 38
3.1.2if结构 38
3.1.3switch结构 42
3.2认识循环结构 43
3.2.1为什么需要循环结构 43
3.2.2while循环 44
3.2.3do-while循环 45
3.2.4for循环 46
3.2.5循环嵌套 47
3.2.6break语句和continue语句 48
3.3数组 50
3.3.1为什么需要数组 50
3.3.2如何定义数组 50
3.3.3如何使用数组 51
3.3.4数组的引用性质 53
3.3.5数组的应用 54
3.3.6多维数组 55
本章知识体系 56
第4章 实践指导1 57
本章术语 57
4.1关于变量和数据类型的实践 57
4.2流程控制和数组的综合实践 59
第5章 面向对象编程(一) 68
本章术语 68
5.1认识类和对象 68
5.1.1为什么需要类 68
5.1.2如何定义类 69
5.1.3如何使用类实例化对象 69
5.1.4如何访问对象中的成员变量 70
5.1.5对象的引用性质 71
5.2认识成员函数 73
5.2.1为什么需要函数 73
5.2.2如何定义和使用成员函数 73
5.2.3函数参数的传递 77
5.2.4认识函数重载 78
5.3认识构造函数 80
5.3.1为什么需要构造函数 80
5.3.2如何定义和使用构造函数 81
本章知识体系 82
第6章 面向对象编程(二) 83
本章术语 83
6.1静态变量和静态函数 83
6.1.1为什么需要静态变量 83
6.1.2静态变量的常见应用 85
6.1.3认识静态函数 87
6.1.4静态代码块 88
6.2使用封装 89
6.2.1为什么需要封装 89
6.2.2如何实现封装 89
6.3使用包 91
6.3.1为什么需要包 91
6.3.2如何将类放在包中 91
6.3.3如何访问包中的类 93
6.4使用访问控制修饰符 96
6.4.1什么是访问控制修饰符 96
6.4.2类的访问控制修饰符 96
6.4.3成员的访问控制修饰符 96
6.5使用类中类 97
本章知识体系 98
第7章 面向对象编程(三) 99
本章术语 99
7.1使用继承 99
7.1.1为什么需要继承 99
7.1.2如何实现继承 100
7.1.3继承的底层本质 102
7.2成员的覆盖 104
7.2.1什么是成员覆盖 104
7.2.2成员覆盖有何作用 106
7.3使用多态性 107
7.3.1什么是多态 107
7.3.2如何使用多态性 108
7.3.3父类和子类对象的类型转换 110
7.4抽象类和接口 112
7.4.1为什么需要抽象类 112
7.4.2为什么需要接口 113
7.5其他内容 114
7.5.1final关键字 114
7.5.2Object类 115
7.6一些工具的使用 117
7.6.1将字节码打包发布 117
7.6.2文档的使用 120
本章知识体系 123
第8章 实践指导2 124
本章术语 124
8.1单例模式的设计 124
8.1.1需求简介 124
8.1.2不用单例模式的效果 125
8.1.3最原始的单例模式 126
8.1.4首次改进 126
8.1.5再次改进 127
8.1.6思考题 129
8.2利用继承和多态扩充程序功能 129
8.2.1需求简介 129
8.2.2实现方法 130
8.2.3出现的问题 131
8.2.4改进 131
8.2.5测试 132
第9章 Java异常处理 134
本章术语 134
9.1认识异常 134
9.1.1生活中的异常 134
9.1.2软件中的异常 135
9.1.3为什么要处理异常 136
9.1.4异常的机理 137
9.1.5常见异常 138
9.2异常的就地捕获 139
9.2.1为什么要就地捕获 139
9.2.2如何就地捕获异常 140
9.2.3如何捕获多种异常 141
9.2.4用finally保证安全性 144
9.3异常的向前抛出 146
9.3.1为什么要向前抛出 146
9.3.2如何向前抛出 146
9.4自定义异常 150
9.4.1为什么需要自定义异常 150
9.4.2如何自定义异常 151
本章知识体系 153
第10章 Java常用API(一) 154
本章术语 154
10.1数值运算 154
10.1.1用Math类实现数值运算 154
10.1.2实现随机数 156
10.2用String类进行字符串处理 157
10.3用StringBuffer类进行字符串处理 160
10.4基本数据类型的包装类 162
10.4.1认识包装类 162
10.4.2通过包装类进行数据类型转换 163
10.5常用系统类 163
10.5.1认识System类 163
10.5.2认识Runtime类 164
本章知识体系 165
第11章 Java常用API(二) 166
本章术语 166
11.1认识Java集合 166
11.1.1为什么需要集合 166
11.1.2Java中的集合 167
11.2使用一维集合 168
11.2.1认识一维集合 168
11.2.2使用List集合 168
11.2.3使用Set集合 170
11.2.4使用Collections类对集合进行处理 173
11.2.5使用泛型简化集合操作 174
11.3Java中的二维集合 176
11.3.1使用Map集合 176
11.3.2使用Hashtable和Properties 178
11.4日期操作 178
11.4.1认识Date类 178
11.4.2认识Calendar类 179
11.4.3如何格式化日期 180
11.4.4更进一步:如何格式化数值 181
本章知识体系 182
第12章 Java多线程开发 183
本章术语 183
12.1认识多线程 183
12.1.1为什么需要多线程 183
12.1.2继承Thread类开发多线程 185
12.1.3实现Runnable接口开发多线程 187
12.1.4两种方法有何区别 189
12.2控制线程的运行 190
12.2.1为什么要控制线程的运行 190
12.2.2传统方法的安全问题 190
12.2.3如何控制线程的运行 191
12.3线程协作安全 193
12.3.1什么是线程协作 193
12.3.2一个有问题的案例 193
12.3.3如何解决 194
12.4线程同步安全 195
12.4.1什么是线程同步 195
12.4.2一个有问题的案例 195
12.4.3如何解决 197
12.4.4小心线程死锁 199
12.5认识定时器 201
12.5.1为什么需要定时器 201
12.5.2如何使用定时器 201
本章知识体系 204
第13章 Java IO操作 205
本章术语 205
13.1认识IO操作 205
13.2用File类操作文件 206
13.2.1认识File类 206
13.2.2使用File类操作文件 207
13.2.3使用File类操作目录 208
13.3字节流的输入与输出 209
13.3.1认识字节流 209
13.3.2如何读写文件 210
13.3.3如何读写对象 213
13.4字符流的输入与输出 216
13.4.1认识字符流 216
13.4.2如何读写文件 216
13.4.3如何进行键盘输入 219
13.5和IO操作相关的其他类 220
13.5.1用RandomAccessFile类进行文件的读写 220
13.5.2使用Properties类 222
本章知识体系 225
第14章 实践指导3 226
本章术语 226
14.1字符频率统计软件 226
14.1.1软件功能简介 226
14.1.2重要技术 227
14.1.3项目结构 227
14.1.4代码的编写 228
14.1.5思考题 230
14.2文本翻译软件 230
14.2.1软件功能简介 230
14.2.2重要技术 231
14.2.3项目结构 231
14.2.4代码的编写 232
14.2.5思考题 233
14.3用享元模式优化程序性能 234
14.3.1为什么需要享元模式 234
14.3.2重要技术 234
14.3.3代码的编写 235
14.3.4思考题 236
第15章 用Swing开发GUI程序 237
本章术语 237
15.1认识GUI和Swing 237
15.1.1什么是GUI 237
15.1.2什么是Swing 238
15.2使用窗口 238
15.2.1用JFrame类开发窗口 238
15.2.2用JDialog类开发窗口 239
15.3使用控件 241
15.3.1什么是控件 241
15.3.2标签、按钮、文本框和密码框 242
15.3.3单选按钮、复选框和下拉列表框 244
15.3.4菜单 246
15.3.5使用JOptionPane 247
15.3.6其他控件 248
15.4颜色、字体和图片 250
15.4.1如何使用颜色 250
15.4.2如何使用字体 251
15.4.3如何使用图片 253
15.5几个有用的功能 255
15.5.1如何设置界面的显示风格 255
15.5.2如何获取屏幕大小 256
15.5.3如何用默认应用程序打开文件 256
15.5.4如何将程序显示为系统托盘 257
本章知识体系 257
第16章 Java界面布局管理 258
本章术语 258
16.1认识布局管理 258
16.1.1为什么需要布局管理 258
16.1.2认识LayoutManager 259
16.2使用FlowLayout 260
16.2.1什么是FlowLayout 260
16.2.2如何使用FlowLayout 260
16.3使用GridLayout 262
16.3.1什么是GridLavout 262
16.3.2如何使用GridLayout 262
16.4使用BorderLayout 263
16.4.1什么是BorderLayout 263
16.4.2如何使用BorderLayout 264
16.5一个综合案例:计算器 265
16.5.1案例需求 265
16.5.2关键技术 266
16.5.3代码的编写 267
16.6使用空布局 268
16.6.1什么是空布局 268
16.6.2如何使用空布局 269
本章知识体系 270
第17章 Java事件处理 271
本章术语 271
17.1认识事件处理 271
17.1.1什么是事件 271
17.1.2事件处理代码的编写 272
17.1.3另外几种编程风格 274
17.2处理ActionEvent 276
17.2.1什么情况发出ActionEvent 276
17.2.2使用ActionEvent解决实际问题 276
17.3处理FocusEvent 277
17.3.1什么情况发出FocusEvent 277
17.3.2使用FocusEvent解决实际问题 278
17.4处理KeyEvent 279
17.4.1什么情况发出KeyEvent 279
17.4.2使用KeyEvent解决实际问题 279
17.5处理MouseEvent 280
17.5.1什么情况发出MouseEvent 280
17.5.2使用MouseEvent解决实际问题 280
17.6处理WindowEvent 282
17.6.1什么情况发出WindowEvent 282
17.6.2使用WindowEvent解决实际问题 283
17.7使用Adapter简化开发 284
本章知识体系 285
第18章 实践指导4 286
本章术语 286
18.1用户管理系统功能简介 286
18.2关键技术 288
18.2.1如何组织界面 288
18.2.2如何访问文件 288
18.2.3如何保持状态 288
18.2.4还有哪些公共功能 289
18.3代码的编写 289
18.3.1编写util包中的类 289
18.3.2编写frame包中的类 291
18.3.3编写主函数所在的类 297
18.4思考题 297
第19章 Java画图之基础知识 298
本章术语 298
19.1认识Java画图 298
19.1.1为什么要学习画图 298
19.1.2如何实现画图 299
19.2用Graphics画图 301
19.2.1什么是Graphics 301
19.2.2如何使用Graphics 301
19.2.3用Graphics实现画图 305
19.2.4一个综合案例 307
19.3画字符串 308
19.3.1为什么需要画字符串 308
19.3.2如何画字符串 309
19.3.3案例:产生验证码 309
19.4画图片 310
19.4.1为什么需要画图片 310
19.4.2如何画图片 310
19.4.3如何进行图片的裁剪和缩放 311
19.4.4如何进行图片的旋转 313
本章知识体系 314
第20章 Java画图之高级知识 315
本章术语 315
20.1结合键盘事件进行画图 315
20.1.1实例需求 315
20.1.2复习键盘事件 315
20.1.3代码的编写 316
20.1.4解决重画问题 317
20.2结合鼠标事件进行画图 318
20.2.1实例需求 318
20.2.2复习鼠标事件 318
20.2.3代码的编写 319
20.3动画制作 320
20.3.1实例需求 320
20.3.2关键技术 321
20.3.3代码的编写 322
20.3.4如何使用双缓冲保存图片到文件 324
本章知识体系 327
第21章 实践指导5 328
本章术语 328
21.1卡通时钟 328
21.1.1软件功能简介 328
21.1.2重要技术 328
21.1.3代码的编写 330
21.1.4思考题 332
21.2拼图游戏 332
21.2.1软件功能简介 332
21.2.2重要技术 333
21.2.3代码的编写 337
21.2.4思考题 341
第22章 用TCP开发网络应用程序 342
本章术语 342
22.1认识网络编程 342
22.1.1什么是网络应用程序 342
22.1.2认识IP地址和端口 343
22.1.3客户端和服务器 345
22.2用客户端连接到服务器 346
22.2.1案例介绍 346
22.2.2如何实现客户端连接到服务器 346
22.2.3代码的编写 348
22.3利用TCP实现双向聊天系统 350
22.3.1案例介绍 350
22.3.2如何实现双向聊天 350
22.3.3代码的编写 353
22.4利用TCP实现多客户聊天系统 355
22.4.1案例介绍 355
22.4.2编写服务器程序 357
22.4.3编写客户端程序 359
本章知识体系 360
第23章 用UDP开发网络应用程序 361
本章术语 361
23.1利用UDP实现双向聊天系统 361
23.1.1案例介绍 361
23.1.2服务器和客户端是如何交互的 362
23.1.3如何收发信息 363
23.1.4代码的编写 367
23.2利用UDP实现多客户聊天系统 370
23.2.1案例介绍 370
23.2.2编写服务器程序 370
23.2.3编写客户端程序 373
本章知识体系 374
第24章 URL编程和Applet开发 375
本章术语 375
24.1认识URL编程 375
24.1.1什么是URL 375
24.1.2认识URL类 376
24.1.3如何获取网页的内容 376
24.2认识Applet 378
24.2.1什么是Applet 378
24.2.2如何开发Applet 378
24.2.3如何使用Applet 379
24.3深入理解Applet 380
24.3.1Applet是如何运行的 380
24.3.2Applet功能的限制 380
24.3.3如何向Applet内传参数 381
本章知识体系 382
第25章 实践指导6 383
本章术语 383
25.1网络打字游戏功能简介 383
25.2关键技术 384
25.2.1如何组织界面 384
25.2.2客户端如何掉下字母 384
25.2.3客户端如何实现加减分数 385
25.2.4客户端如何判断输了 386
25.3代码的编写 387
25.3.1服务器端 387
25.3.2客户端 389
第26章 Java加密和解密 392
本章术语 392
26.1认识加密 392
26.1.1为什么需要加密 392
26.1.2认识加密算法和密钥 393
26.2实现对称加密 394
26.2.1什么是对称加密 394
26.2.2用Java实现对称加密 394
26.3实现非对称加密 396
26.3.1什么是非对称加密 396
26.3.2用Java实现非对称加密 397
26.4实现单向加密 400
26.4.1什么是单向加密 400
26.4.2用Java实现MD5 400
本章知识体系 401
第27章 Java数字签名 402
本章术语 402
27.1认识数字签名 402
27.1.1为什么需要数字签名 402
27.1.2数字签名的过程 403
27.2实现数字签名 403
27.2.1发送方生成签名 403
27.2.2接收方验证签名 405
27.3利用数字签名解决实际问题 407
27.3.1解决篡改问题 407
27.3.2解决抵赖问题 410
本章知识体系 412
第28章 Java反射技术 413
本章术语 413
28.1为什么要学习反射 413
28.1.1引入配置文件 413
28.1.2配置文件遇到的问题 414
28.2认识Class类 415
28.2.1什么是Class类 415
28.2.2如何获取一个类对应的Class对象 415
28.2.3如何获取类中的成员信息 417
28.3通过反射机制访问对象 422
28.3.1如何实例化对象 422
28.3.2如何给成员变量赋值 424
28.3.3如何调用成员函数 424
28.4何时使用反射 426
本章知识体系 426
第29章 用反射技术编写简单的框架 427
本章术语 427
29.1什么是框架 427
29.2动态异常处理框架 427
29.2.1框架功能简介 427
29.2.2重要技术 429
29.2.3框架代码的编写 430
29.2.4使用该框架 432
29.3动态对象组装框架 435
29.3.1框架功能简介 435
29.3.2引入工厂 436
29.3.3引入配置文件 437
29.3.4重要技术 438
29.3.5框架代码的编写 438
29.3.6使用该框架 439
第30章 综合案例:用TCP技术开发即时通信软件 442
本章术语 442
30.1即时通信软件功能简介 442
30.1.1服务器界面 442
30.1.2客户的登录和注册 442
30.1.3消息收发界面 443
30.1.4在线名单的刷新 444
30.2项目关键技术 444
30.2.1传输消息如何表示 444
30.2.2客户信息如何表示 446
30.2.3客户文件如何保存在服务器端 447
30.2.4如何读写客户文件 447
30.2.5基本模块结构 448
30.3编写服务器端 450
30.3.1准备工作 450
30.3.2编写app.Server类 450
30.3.3编写app.ChatThread类 451
30.3.4编写main.Main类 454
30.4编写客户端 454
30.4.1准备工作 454
30.4.2编写app.LoginFrame类 454
30.4.3编写app.ChatFrame类 457
30.4.4编写app.RegisterFrame类 459
30.4.5编写main.Main类 462
30.5思考题 462