标题：21天学通Java
图书信息
作　者：庞永庆 庞丽娟 等编著 
出 版 社： 电子工业出版社
出版时间： 2009-1-1
页　数：416页
开　本： 16开
ISBN 9787121078972
分类： 图书 >> 计算机/程序设计>>Java
定价：￥49.80元（含DVD光盘1张）
宣传语
 基础知识核心技术典型实例综合练习项目案例
 307个典型实例、1个项目案例、246个练习题
 一线开发人员全程贴心讲解，上手毫不费力
 20小时多媒体语音视频教学
 本书源代码 + 本书电子教案（PPT）
 1000余页编程参考宝典电子书（免费赠送）
内 容 提 要
本书旨在为Java语言的初学者和大中专学生提供易于入门，便于全面了解和掌握Java编程技术的教辅资料，同时对有一定经验的Java编程者和学习者也有一定的参考价值。
本书附赠DVD光盘1张，内容包括超大容量手把手视频、电子教案（PPT）、编程参考宝典电子书、源代码及各章习题答案。
本 书 特 点
千里之行，始于足下！
——老子 
为什么要写这样一本书
作为一个初学Java编程的人，最重要的第一步是什么呢？毫无疑问，是选择一本好书。虽然书店中讲解Java基础的书已经有很多了，但是却很难找到适合初学者使用的一本。很多书中都有许多复杂难记的语法和概念，这些常是最容易使Java初学者放弃的地方，就像有一堵无形的墙立在面前而使他们无法逾越。
为了让那些Java初学人员少走弯路，快速而轻松地学会Java编程，笔者决定总结自己学习Java的经验，并结合多年的开发经验，编写一本能够真正让Java初学人员容易掌握的书。在这本书中，笔者将通过21天的学习规划，帮助读者快速掌握Java编程的基本知识，为以后进行Java开发打下基础。
本书有何特色
1．细致体贴的讲解
为了让读者更快地上手，本书特别设计了适合初学者的学习方式，用准确的语言总结概念#用直观的图示演示过程#用详细的注释解释代码#用形象的比方帮助记忆。效果如下：
1)知识点介绍 准确、清晰是其显著特点，一般放在每一节开始位置，让零基础的读者了解相关概念，顺利入门。
2)范例 书中出现的完整实例，以章节顺序编号，便于检索和循序渐进地学习、实践，放在每节知识点介绍之后。
3)范例代码 与范例编号对应，层次清楚、语句简洁、注释丰富，体现了代码优美的原则，有利于读者养成良好的代码编写习惯。对于大段程序，均在每行代码前设定编号便于学习。
4)运行结果 对范例给出运行结果和对应图示，帮助读者更直观地理解范例代码。
5)代码解析 将范例代码中的关键代码行逐一解释，有助于读者掌握相关概念和知识。
6综合练习 为了便于读者巩固所学内容，本书每章中均提供了综合练习，并给出了操作提示和结果，配合读者自己动手实践。
7)习题 每章最后提供专门的测试习题，供读者检验所学知识是否牢固掌握，题目的提示或答案放在光盘中。
8)贴心的提示 为了便于读者阅读，全书还穿插着一些技巧、提示等小贴士，体例约定如下：
— 提示：通常是一些贴心的提醒，让读者加深印象或提供建议，或者解决问题的方法。
— 注意：提出学习过程中需要特别注意的一些知识点和内容，或者相关信息。
— 警告：对操作不当或理解偏差将会造成的灾难性后果做警示，以加深读者印象。
经作者多年的培训和授课证明，以上讲解方式是最适合初学者学习的方式，读者按照这种方式，会非常轻松、顺利地掌握本书知识。
2．实用超值的DVD光盘
为了帮助读者比较直观地学习，本书附赠DVD光盘，内容包括多媒体视频、电子教案（PPT）、编程参考宝典电子书、各章习题答案和实例源代码等。
多媒体视频
赠送1GB，长达20小时手把手教学视频，讲解关键知识点界面操作和书中的一些综合练习题。作者亲自配音、演示，手把手教会读者使用。
电子教案（PPT）
本书可以作为高校相关课程的教材或课外辅导书，所以笔者特别为本书制作了电子教案（PPT），以方便老师教学使用。
编程参考宝典电子书
为方便广大读者学习，特别制作了编程开发参考电子书，供读者查阅和参考。
3．提供完善的技术支持
读者可以在上面提问交流。另外，论坛上还有一些小的教程、视频动画和各种技术文章，可帮助读者提高开发水平。
4．丰富的额外素材下载
相关的开发素材文件。
推荐的学习计划
本书作者在长期从事相关培训或教学实践过程中，归纳了最适合初学者的学习模式，并参考了多位专家的意见，为读者总结了合理的学习时间分配方式，
本书适合哪些读者阅读
本书非常适合以下人员阅读。
— 从未接触过Java编程的自学人员；
— 了解一些Java，但还需要进一步学习的人员；
— 各大中专院校的在校学生和相关授课老师；
— 其他编程爱好者。
本书作者 
2009年1月
目 录
第一篇 基础篇
第1章 Java简介（精彩视频：33分钟） 21
1.1 Java的平台简介 21
1.2 安装工具包 22
1.2.1 下载JDK 22
1.2.2 安装JDK 24
1.2.3 查看与设置环境变量 25
1.2.4 JDK常用命令 27
1.2.5 Java各个目录含义 28
1.2.6 要善于使用JDK的帮助文件 28
1.3 程序开发过程 29
1.4 编码规范 29
1.5 HelloWorld：第一个Java程序 30
1.5.1 编写程序代码 30
1.5.2 编译程序代码并运行 30
1.5.3 注意事项 31
1.6 使用Eclipse集成开发工具开发 32
1.7 综合练习 32
1.8 小结 33
1.9 习题 33
第2章 Java的基本数据类型（精彩视频：38分钟） 34
2.1 数据类型 34
2.1.1 整型 34
2.1.2 浮点型 35
2.1.3 字符型（char） 36
2.1.4 布尔型（boolean） 36
2.2 数据类型间的转换 36
2.2.1 自动转换 36
2.2.2 强制转换 37
2.2.3 隐含转换 37
2.3 标识符的命名 38
2.3.1 标识符的命名规则 38
2.3.2 代码演示如何定义标识符 38
2.3.3 不好的标识符命名 38
2.3.4 良好的标识符命名 39
2.4 关键字 39
2.5 代码注释 40
2.5.1 行注释 40
2.5.2 块注释 41
2.5.3 文档注释用户自定义类型 41
2.6 综合练习 43
2.7 小结 43
2.8 习题 43
第3章 运算符（精彩视频：43分钟） 45
3.1 算术运算符 45
3.1.1 “+”：加法运算符 45
3.1.2 “-”：减法运算符 46
3.1.3 “*”：乘法运算符 47
3.1.4 “/”：除法运算符 48
3.1.5 “%”：求余运算符 48
3.2 自增自减运算符 49
3.3 关系运算符 51
3.3.1 “==”、“！=” 51
3.3.2 “>”、“<”、“>=”、“<=” 52
3.4 逻辑运算符 53
3.4.1 “&&”：与运算符 53
3.4.2 “||”：或运算符 53
3.4.3 “!”：非运算符 54
3.4.4 逻辑运算符总结 54
3.5 三元运算符 55
3.6 位运算符 55
3.6.1 “&”：按位与运算符 56
3.6.2 “|”：按位或运算符 56
3.6.3 “^”：按位异或运算符 57
3.7 位移运算符 57
3.7.1 “>>”：带符号右移运算符 58
3.7.2 “<<”：带符号左移运算符 58
3.7.3 “>>>”：无符号右移运算符 58
3.8 赋值运算符 59
3.8.1 一般赋值运算符 59
3.8.2 运算赋值运算符 59
3.9 运算符之间的优先级 60
3.10 综合练习 61
3.11 小结 62
3.12 习题 62
第4章 流程控制（精彩视频：58分钟） 64
4.1 if条件语句 64
4.1.1 if语句的语法 64
4.1.2 if语句用法举例 64
4.2 switch分支语句 67
4.2.1 switch分支语句的语法 67
4.2.2 switch分支语句表达式的使用条件 68
4.2.3 switch分支语句举例 70
4.3 while循环语句 72
4.3.1 while循环语句的语法 72
4.3.2 while循环语句举例 73
4.4 do...while循环语句 73
4.4.1 do...while循环语句的语法 74
4.4.2 do ... while循环语句举例 74
4.5 for循环语句 75
4.5.1 for循环语句的语法 75
4.5.2 用for循环来实现其他循环语句 76
4.5.3 for循环语句的举例 77
4.6 如何中断和继续语句的执行 78
4.6.1 break：中断语句执行 78
4.6.2 continue：继续语句执行 79
4.7 综合练习 79
4.8 小结 80
4.9 习题 81
第5章 数组（精彩视频：52分钟） 83
5.1 如何创建数组 83
5.1.1 创建数组 83
5.1.2 创建多维数组 84
5.2 数组的初始化 85
5.2.1 创建并初始数组元素 85
5.2.2 循环初始化 87
5.3 数组操作的举例 88
5.3.1 数组元素值的复制 88
5.3.2 数组元素的排序 90
5.3.3 在数组里查找指定元素 91
5.3.4 利用数组打印26个英文字母 92
5.4 综合练习 93
5.5 小结 94
5.6 习题 94
第二篇 面向对象篇
第6章 类与对象（精彩视频：48分钟） 96
6.1 什么是面向对象 96
6.1.1 面向对象编程的特点 96
6.1.2 面向对象编程与面向过程编程的区别 97
6.2 什么是类 97
6.2.1 类的定义和对象的创建 97
6.2.2 如何使用现有类 99
6.2.3 类设计的技巧 100
6.3 成员变量 101
6.3.1 成员变量的创建 101
6.3.2 成员变量的初始化 102
6.4 局部变量 105
6.4.1 局部变量的创建和初始化 105
6.4.2 局部变量和成员变量的区别 106
6.5 方法 106
6.5.1 方法的创建和参数 106
6.5.2 方法参数的传递 108
6.6 对象引用的使用 110
6.6.1 调用不存在的对象或成员变量 110
6.6.2 调用对象为null值的引用 111
6.6.3 对象引用间的比较 113
6.7 this 113
6.8 要活用JDK已有的类 114
6.8.1 Date类 114
6.8.2 Integer类 116
6.9 综合练习 117
6.10 小结 118
6.11 习题 118
第7章 控制逻辑（精彩视频：50分钟） 120
7.1 包（package） 120
7.1.1 创建一个包 120
7.1.2 如何使用包 121
7.1.3 什么是静态引入 122
7.2 类的访问级别 123
7.2.1 公开的访问级别 123
7.2.2 默认的访问级别 124
7.3 什么是封装 125
7.4 最终修饰符 127
7.4.1 final修饰对象类型的成员变量 127
7.4.2 final修饰基本类型的成员变量 129
7.4.3 final修饰的局部变量 131
7.4.4 final修饰的方法 132
7.5 静态修饰符 134
7.5.1 什么是静态变量 134
7.5.2 静态变量的访问 135
7.5.3 什么是静态常量 137
7.6 综合练习 139
7.7 小结 140
7.8 习题 140
第8章 继承（精彩视频：72分钟） 141
8.1 什么是继承 141
8.1.1 类的继承 142
8.1.2 继承的语法 145
8.2 修饰符 146
8.2.1 public：声明成员变量为公共类型 146
8.2.2 private：声明成员变量为私有类型 147
8.2.3 default：声明成员变量为默认类型 148
8.2.4 protected：声明成员变量为保护类型 149
8.3 成员变量的覆盖 150
8.4 对象引用 151
8.5 方法的重写和重载 152
8.5.1 方法重写的特点 152
8.5.2 方法重载的特点 154
8.5.3 重写的返回类型 156
8.5.4 重写是基于继承的 158
8.5.5 静态方法是不能重写的 159
8.5.6 三者之间的关系 161
8.5.7 重写toString方法 162
8.5.8 重写equals方法 163
8.6 final与继承的关系 164
8.7 abstract与继承的关系 165
8.8 什么是多态 166
8.9 什么是枚举类 168
8.10 什么是反射机制 169
8.11 什么是泛型 170
8.12 综合练习 172
8.13 小结 172
8.14 习题 172
第9章 接口（精彩视频：47分钟） 174
9.1 什么是接口 174
9.1.1 接口的定义 174
9.1.2 访问接口里的常量 176
9.2 接口的使用 177
9.2.1 接口里的方法如何创建 177
9.2.2 接口引用怎么使用 178
9.3 什么是抽象类 180
9.3.1 抽象类的使用和特点 180
9.3.2 抽象类与接口区别 183
9.4 接口的多态 183
9.5 判断类型 185
9.5.1 什么是instanceof 185
9.5.2 使用instanceof的注意事项 188
9.6 综合练习 189
9.7 小结 189
9.8 习题 189
第10章 构造器（精彩视频：46分钟） 191
10.1 什么是构造器 191
10.1.1 构造器的使用 191
10.1.2 被修饰的构造器 193
10.1.3 构造器方法与普通方法的区别 196
10.2 如何实例化一个对象 197
10.3 构造器的使用 199
10.3.1 构造器的调用 199
10.3.2 构造器重载 202
10.3.3 父子类间的构造器的调用流程 204
10.3.4 如何自定义构造器 207
10.4 什么是单子模式 208
10.5 构造器在程序中是何时运行的 211
10.6 综合练习 214
10.7 小结 215
10.8 习题 215
第11章 异常处理（精彩视频：60分钟） 217
11.1 异常处理基本介绍 217
11.1.1 try和catch捕获异常 217
11.1.2 try-catch语句使用注意点 218
11.1.3 finally语句的使用 220
11.1.4 再谈异常处理注意点 222
11.2 异常的分类 223
11.2.1 捕获异常 223
11.2.2 未捕获异常 225
11.3 抛出异常 225
11.3.1 抛出异常的简单介绍 225
11.3.2 使用throws和throw语句抛出异常 227
11.4 自定义异常 227
11.4.1 创建和使用自定义异常类 227
11.4.2 自定义异常的实际应用 228
11.5 综合练习 231
11.6 小结 232
11.7 习题 232
第12章 内部类（精彩视频：71分钟） 234
12.1 非静态内部类 234
12.1.1 创建非静态内部类 234
12.1.2 在外部类中访问内部类 235
12.1.3 在外部类外访问内部类 236
12.1.4 在内部类中访问外部类 237
12.2 局部内部类 240
12.2.1 创建局部内部类 240
12.2.2 在局部内部类中访问外部类成员变量 240
12.2.3 在局部内部类中访问外部类的局部变量 241
12.2.4 静态方法中的局部内部类 243
12.3 静态内部类 244
12.3.1 创建静态内部类 244
12.3.2 在外部类中访问静态内部类 245
12.3.3 在外部类外访问静态内部类 246
12.4 匿名内部类 247
12.4.1 创建匿名内部类 247
12.4.2 匿名内部类的初始化 249
12.5 综合练习 250
12.6 小结 250
12.7 习题 250
第13章 多线程（精彩视频：55分钟） 252
13.1 多线程简介 252
13.2 定义线程和创建线程对象 252
13.2.1 继承Thread类定义线程 252
13.2.2 实现Runnable接口定义线程 253
13.3 运行线程 254
13.3.1 启动线程 254
13.3.2 同时运行多个线程 256
13.4 线程生命周期 257
13.4.1 新建状态 257
13.4.2 准备状态 257
13.4.3 运行状态 257
13.4.4 等待/阻塞状态 258
13.4.5 死亡状态 258
13.5 线程的调度 258
13.5.1 睡眠方法 258
13.5.2 线程优先级 260
13.5.3 yield让步方法 261
13.5.4 join让步方法 262
13.6 综合练习 264
13.7 小结 265
13.8 习题 265
第三篇 应用篇
第14章 Swing桌面程序开发（精彩视频：70分钟） 268
14.1 开发第一个Swing程序 268
14.2 JFrame窗口类 269
14.2.1 JFrame窗口类简介 269
14.2.2 创建简单窗体 269
14.2.3 设置窗体 271
14.3 JPanel面板类 273
14.3.1 容器介绍 273
14.3.2 JPanel面板类简介 274
14.3.3 创建面板 274
14.4 JLabel标签类 275
14.4.1 JLabel标签类简介 275
14.4.2 创建标签 276
14.5 JButton按钮类 276
14.5.1 JButton按钮类简介 277
14.5.2 创建按钮 277
14.5.3 按钮动作事件 278
14.6 Swing中的事件 280
14.6.1 事件简介 280
14.6.2 同一个事件源注册多个监听器 280
14.6.3 同一个监听器注册给多个事件源 282
14.6.4 窗体获取和失去焦点事件 283
14.6.5 窗体打开、关闭和激活事件 284
14.7 综合练习 286
14.8 小结 288
14.9 习题 288
第15章 布局管理器（精彩视频：62分钟） 290
15.1 流布局 290
15.1.1 流布局介绍 290
15.1.2 使用流布局 291
15.2 网格布局 293
15.2.1 网格布局介绍 293
15.2.2 使用网格布局 293
15.3 边框布局 295
15.3.1 边框布局介绍 296
15.3.2 使用边框布局 296
15.4 空布局 298
15.4.1 空布局介绍 298
15.4.2 使用空布局 298
15.5 卡片布局 299
15.5.1 卡片布局介绍 299
15.5.2 使用卡片布局 300
15.6 综合练习 302
15.7 小结 304
15.8 习题 304
第16章 Swing常用控件（精彩视频：90分钟） 306
16.1 文本框及密码框和多行文本框 306
16.1.1 创建文本框 306
16.1.2 创建密码框 307
16.1.3 创建多行文本框 309
16.2 复选框和单选按钮 310
16.2.1 创建单选按钮 310
16.2.2 创建复选框 313
16.3 选项卡 315
16.3.1 选项卡介绍 315
16.3.2 创建选项卡 315
16.4 分隔窗格 317
16.4.1 分隔窗格介绍 317
16.4.2 创建分隔窗格 317
16.5 滑块和进度条 319
16.5.1 创建滑块 319
16.5.2 创建进度条 320
16.6 列表框 323
16.6.1 列表框介绍 323
16.6.2 创建列表框 324
16.6.3 下拉列表框 326
16.7 菜单 328
16.7.1 菜单介绍 328
16.7.2 创建菜单 329
16.7.3 创建弹出式菜单 330
16.8 综合练习 330
16.9 小结 332
16.10 习题 333
第17章 JDBC数据库编程（精彩视频：63分钟） 335
17.1 数据库基本介绍 335
17.1.1 数据库介绍 335
17.1.2 数据库应用架构 335
17.1.3 数据库模型 336
17.2 JDBC数据库编程介绍 336
17.2.1 JDBC和ODBC的关系 337
17.2.2 为什么使用JDBC数据库编程 337
17.3 SQL数据库操作技术 338
17.3.1 什么是SQL 338
17.3.2 如何进行SQL操作 338
17.4 创建数据库 339
17.4.1 创建Access数据库 339
17.4.2 创建SQL Server数据库 339
17.5 JDBC编程步骤 342
17.5.1 创建数据源 342
17.5.2 加载驱动程序 344
17.5.3 建立数据库连接 345
17.5.4 进行数据库操作 345
17.5.5 获取数据库中信息 346
17.5.6 JDBC数据库编程实例 347
17.6 事务处理 348
17.6.1 事务介绍 348
17.6.2 进行事务操作 349
17.7 综合练习 351
17.8 小结 352
17.9 习题 352
第18章 Java中输入/输出流（精彩视频：55分钟） 353
18.1 I/O流简介 353
18.1.1 什么是I/O流 353
18.1.2 节点流与处理流 353
18.1.3 字节流与字符流 354
18.1.4 抽象基类 354
18.2 使用流进行文件操作 356
18.2.1 使用File类进行文件与目录操作 356
18.2.2 FileInputStream类与FileOutputStream类 359
18.2.3 FileReader类与FileWriter类 362
18.3 综合练习 364
18.4 小结 364
18.5 习题 364
第19章 集合框架（精彩视频：65分钟） 366
19.1 集合框架总论 366
19.1.1 什么是集合框架 366
19.1.2 Collection接口 366
19.2 列表 367
19.2.1 List列表接口 367
19.2.2 Vector类 368
19.2.3 ArrayList类 371
19.2.4 LinkedList类 373
19.3 集合 376
19.3.1 Set接口 376
19.3.2 SortedSet接口 377
19.3.3 TreeSet类 378
19.3.4 HashSet类 380
19.4 映射 381
19.4.1 Map接口 381
19.4.2 HashMap类 382
19.4.3 TreeMap类 384
19.5 综合练习 385
19.6 小结 386
19.7 习题 387
第20章 网络编程（精彩视频：58分钟） 389
20.1 网络编程基础 389
20.1.1 TCP/IP协议 389
20.1.2 网络编程模型 389
20.1.3 网络传输协议 390
20.1.4 端口和套接字 390
20.2 基于TCP/IP协议的网络编程 391
20.2.1 Socket套接字 391
20.2.2 ServerSocket类 391
20.2.3 Socket类 392
20.2.4 网络编程C/S架构实例 393
20.3 综合练习 396
20.4 小结 398
20.5 习题 398
第四篇 综合案例篇
第21章 学生管理系统（精彩视频：54分钟） 399
21.1 系统设计 399
21.2 数据库设计 399
21.3 登录界面开发 400
21.3.1 界面设计 400
21.3.2 程序开发 400
21.4 学生界面开发 402
21.4.1 界面设计 402
21.4.2 程序开发 402
21.4.3 开发插入学生界面 403
21.4.4 查询学生信息界面 406
21.4.5 查询成绩信息 409
21.5 综合练习 412
21.6 小结 413