标题：Java开发之道
图书信息
Java开发之道  明日科技  张振坤  李钟尉  陈丹丹  等编著  
ISBN 978-7-121-12643-7
2011年3月出版
定价：69.00元含（含光盘1张）
16开
564 页
宣传语
高薪工程师经验分享
事半功倍的编程手记
凝聚5位开发高手4年开发心血精华所得，程序开发人员开发的必备宝典
253个感悟、技巧、陷阱、谬误、算法和方案，
帮您轻松掌握程序开发方法，提升开发实战技能。
作者简介
本丛书的作者团队对计算机程序设计类图书市场有很好的敏感性，对出版动态有准确的把握，对计算机技术的发展进行长期跟踪。该团队长期以来致力于计算机图书的内容提供和策划，已经出版的多个系列图书都在计算机图书市场上有良好的口碑，都曾经引领了当年的计算机程序设计畅销书。
内 容 简 介
这是一本集编程感悟、技巧、陷阱、谬误、算法和方案为一体的编程书籍，旨在引导读者如何学习编程，帮助读者丰富编程经验。全书分为6篇，共计16章内容，全面介绍了学习和应用Java进行程序开发的各种陷阱与谬误、技术细节与编程技巧、常用的算法及解决方案，涉及主要包括Java语言关键技术、Swing技术、JDBC、文件、序列化对象、网络、反射、线程、图形图像、动画、算法、方案和数据库应用等的相关技术细节、技巧以及实施方案。
本书附带有配套CD光盘，光盘中提供了书中全部实例和项目的源代码，这些源代码都是经过作者精心调试通过的，保证能够在Windows XP、Windows 2003及Windows 7操作系统下编译和运行。
本书非常适合大中专院校在校生、毕业生、求职者、编程爱好者学习，同时也可以作为想要学习编程的初级人员的指导用书。
前  言
许多求职人员在面试时经常遇到的一个问题是“您有几年开发经验？”这对于一个刚刚走出校园的毕业生来说，简直就是一颗“原子弹”。“经验”真的很重要吗？是的，它是衡量个人能力的砝码，它将许多求职者挡在了名企的门外。
本书不是基础类书籍，不是项目、案例类书籍，它是一本积累编程经验的书籍。本书包括了80个编程细节、97个编程技巧、21个编程陷阱、20个编程谬误、20个优化算法和15个解决方案。这些内容是作者结合自己多年的实际开发经验，精心筛选和提炼而成的。如果您想提高自己的编程能力，本书将是最佳的选择！
本书内容
本书包含6大部分，共16章内容，主要包括编程经验与感悟、陷阱与谬误、技术细节、编程技巧、算法与效率、解决方案等内容。
本书的内容结构如下图所示。
本书特色
内容经典、汇聚精华
书中每项内容都是由作者精心选择的，具有很强的代表性和实用性。
讲解风趣、诙谐生动
无论是在目录名称上还是在技术讲解上，始终突出趣味性。在目录选择上，作者想尽办法使目录更新颖，更能够体现内容的特点。在技术讲解中，通过穿插故事、比喻等形式，帮助读者消化和吸收所介绍的内容。
知无不言、言无不尽
书中在介绍知识点时，对相应专题进行了深入剖析，使知识点呈现系统性、全面性的特点，避免出现一笔带过、言之无物的情况。
图文并茂、形象易懂
书中使用了大量的流程图、示意图及图例来说明和演示技术，帮助读者更直观地理解书中的内容。
代码规范、注释详尽
书中的实例代码都是按照商业编码规范来书写的，为了方便用户阅读代码，几乎所有的代码都提供有详细的注释。
private Connection conn=null;      //声明连接
private PreparedStatement ps=null;     //声明PreparedStatement对象
private ResultSet rs=null;      //声明结果集对象
/**
*定义构造方法，用于加载数据库驱动
*/ 
public PreparedQueryFrame() {
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver"); //加载数据库驱动
} catch  (ClassNotFoundException e ) {
e.printStackTrace();    //打印栈踪迹
}
}
本书约定
书中的所有实例在光盘中均有源代码。
源代码在光盘中的存储形式为“光盘\MR\Instance\12\03\插入排序”，其中，“MR\Instance\”是固定的目录部分，其后的“12”表示实例所在的章号，而章号后的“03”表示二级标题的序号，最后的“插入排序”表示项目名称 ，目录示意图如下所示。
在本书的二级标题下会存在有多个实例的情况，为了区分不同的实例，实例的项目名称都是不同的。例如，03二级标题下存在两个实例，它们的存储形式为“MR\ Instance\12\03\插入排序”和“MR\ Instance\12\03\希尔排序”。
书中有些实例会用到数据库，为了保证程序的运行，用户需要将实例使用的数据库安装到本地机器上，详细安装方法请参考光盘中的“Java开发之道光盘使用说明书”。
出于篇幅的限制，书中有些实例只给出了核心代码，但这不会影响读者的学习，完整的代码可以从本书的光盘中找到。
在使用本书的实例之前，请仔细阅读光盘中的“Java开发之道光盘使用说明书”。
附赠DVD光盘
为了帮助读者学习和练习书中的实例，本书附赠有DVD光盘，里面提供了书中所有实例项目的源代码、素材及“Java开发之道光盘使用说明书”，并赠送了Java的相关学习资料。光盘目录如下图所示。
注：读者在使用本书光盘源码前，请仔细阅读光盘使用说明书。
本书读者群
本书非常适合以下人员阅读：
  Java求职人员
 大中专院校的在校生和毕业生
 相关培训机构的学员
 语言已经入门，急需进一步提高的编程人员
 编程爱好者
 有多年开发经验的程序员
学习答疑
如果您在学习或使用本书的过程中遇到问题或疑惑，可以通过如下方式与我们联系：
我们承诺将在5个工作日内给您提供解答。
本书作者
本书由明日科技组织编写，参加编写的有张振坤、李钟尉、陈丹丹、吕双、刘中华、梁水、张彦国、王乐乐、高春艳、梁晓岚、李伟明、巩建华、赛奎春、杨丽、刘欣等。由于作者水平有限，疏漏和不足之处在所难免，请广大读者朋友批评指正。
明日科技   
2010年7月
目  录
第1篇  编程经验与感悟——站在前人的肩膀上
第1章  编程初学者应养成的良好习惯 2
细节1  最好的老师——培养对编程的兴趣 3
细节2  编程的根基——不容忽视的基础知识 5
细节3  成功的关键——要有学好编程的坚定信心 6
细节4  宝贵的财富——理论与实践相结合 6
细节5  高贵的品质——程序书写要规范化 7
细节6  减少依赖性——学会独立思考和解决问题 10
第2章  高级程序员应具备的基本素质和能力 12
细节1  易于理解——具有良好的编程风格 13
细节2  取长补短——多与别人交流 14
细节3  先决条件——分析和设计数据库 15
细节4  知己知彼——写程序之前要分析 17
细节5  日积月累——写程序之后要总结 18
细节6  重中之重——软件需求规格说明书 18
第2篇  陷阱与谬误——吸取前人的教训
第3章  细说开发人员不可忽略的21个技术陷阱 22
陷阱1  漏洞百出——使用for删除集合元素陷阱 23
陷阱2  差值损失——浮点数相减造成的损失 24
陷阱3  零的危害——不慎使用八进制常量的危害 26
陷阱4  无休无止——while(condition); 以分号结尾 27
陷阱5  无风起浪——初始化静态成员的陷阱 28
陷阱6  稍纵即逝——长整数运算中存在的隐患 29
陷阱7  慎之又慎——复合赋值造成的经济损失 31
陷阱8  鱼龙混杂——为字符串缓存构造器传递字符 32
陷阱9  顺理成章——静态常量的初始化顺序有讲究 33
陷阱10  看似相同——增量、减量运算符在前在后 35
陷阱11  不得不防——不可变的整数运算 36
陷阱12  小心谨慎——字节数组转换为字符串乱码 37
陷阱13  无法挽回——在映射中放入重复键丢失数据 38
陷阱14  不同版本——反序列化对象 39
陷阱15  无法运行——自定义String导致主方法无效 42
陷阱16  损失惨重——不小心隐藏父类的final字段 44
陷阱17  脱离控制——if语句没加大括号“{”和“}” 47
陷阱18  控制无效——缺少break的switch语句 49
陷阱19  痴心妄想——同名形参变量为成员变量赋值 51
陷阱20  各负其责——重写equals方法但是没有重写hashCode方法 53
陷阱21  一字之差——重写对象的hashCode方法， 但重写equals方法时
陷阱21  参数不是Object类型 56
第4章  细说开发人员意识中的20个常见谬误 62
谬误1  看似相同——使用&&、||和&、|作用于布尔值效率相同 63
谬误2  并非如此——类中不能创建私有构造方法 64
谬误3  是非真相——默认构造方法都是public的 64
谬误4  方便阅读——为了提高编程效率而不必关心代码的书写 65
谬误5  片面之词——所有的业务逻辑都应由程序代码来实现 65
谬误6  易于理解——算法应越简单越好 66
谬误7  谬以千里——程序应由开发人员自己调试 67
谬误8  无稽之谈——垃圾回收器可以回收资源而不必手动释放 67
谬误9  提高效率——设计数据库表时不必定义索引 69
谬误10  误入歧途——所有的异常都要用try…catch语句捕获 69
谬误11  必由之路——在try语句块中使用return语句， finally语句
陷阱21  块将得不到执行 71
谬误12  小心为妙——split()方法可分割所有字符串 72
谬误13  不知其二——泛型在不被指定的情况下是不确定的类型 73
谬误14  不知其二——字符串是值类型 74
谬误15  相差甚远——String与StringBuffer基本上相同 75
谬误16  一字之别——重载就是重写 77
谬误17  相差甚远——存储相同数据一维数组、二维数组所占内存基本相同 79
谬误18  恰恰相反——存储数据HashMap比数组快 81
谬误19  恰恰相反——频繁查询数组比HashMap快 82
谬误20  误入歧途——Java中没有全局变量 83
第3篇  技术细节——修炼编程内功心法
第5章  Java语言基础细节47例 86
细节1  意义深远——Java程序的运行机制 87
细节2  建立信心——解决常见错误 87
细节3  提高效率——缓存数据 91
细节4  变幻莫测——装箱与拆箱 92
细节5  无中生有——数组元素的默认初始值 95
细节6  管理内存——内存中的数组 96
细节7  集合杀手——新增的for…each循环 98
细节8  含义不同——使用“==”与equals比较对象 99
细节9  如我所愿——格式化小数与货币值 100
细节10  未卜先知——使用正则表达式 102
细节11  化整为零——分割字符串 105
细节12  变化多端——数据类型转换 105
细节13  永不停息——死循环 107
细节14  交互显示——基本类型与字符串的转换 108
细节15  简单高效——使用Arrays类操作数组 110
细节16  伸缩自如——定义参数可变的方法 111
细节17  有始有终——内存中成员变量的运行机制 112
细节18  呼之即来——内存中局部变量的运行机制 113
细节19  减少开销——掌握变量的使用原则 114
细节20  生死相依——对象的引用与销毁 115
细节21  信息隐蔽——封装 116
细节22  子承父业——继承 117
细节23  变化莫测——多态 118
细节24  小心谨慎——向上转型与向下转型 120
细节25  功能各异——构造方法与初始化块 122
细节26  完全不同——重载与重写 124
细节27  类的模块——抽象类 125
细节28  简单规范——接口 127
细节29  伸缩自如——面向接口编程 128
细节30  类中有类——成员内部类 129
细节31  无名之类——匿名内部类 130
细节32  清理资源——垃圾回收 131
细节33  有备无患——处理异常 132
细节34  简单明了——使用自定义异常 135
细节35  安全易懂——枚举类 137
细节36  独立存储——操作Collection集合 138
细节37  映射关系——操作Map集合 142
细节38  独一无二——使用泛型 144
细节39  出神入化——自定义泛型类 144
细节40  望尘莫及——设置类型形参的上限 145
细节41  难以超越——设置类型通配符的上限 147
细节42  永不退缩——设置类型通配符的下限 148
细节43  异曲同工——创建Class对象 149
细节44  原来如此——用Class对象获得类信息 150
细节45  别有洞天——使用反射创建对象 151
细节46  无奇不有——通过反射调用方法 153
细节47  出神入化——通过反射访问字段 154
第6章  细说开发人员必知必会的 33个开发细节 156
细节1  读取图片文件——显示流中读取的图片 157
细节2  用文件存储对象——序列化对象的IO操作 157
细节3  保护属性——保护序列化对象的属性 160
细节4  并发控制——创建线程 161
细节5  暂停线程——线程休眠 163
细节6  在线程中执行其他线程——线程加入 164
细节7  解决线程冲突——线程同步 166
细节8  更灵活地解决冲突——使用同步锁 168
细节9  协调运行——线程通信 169
细节10  提高性能——使用线程池 171
细节11  独一无二——获取IP地址和域名 173
细节12  TCP网络编程——使用套接字 174
细节13  基于UDP编程——使用数据报 177
细节14  多点广播——实现广播通信 180
细节15  绘画的图纸——图形上下文 183
细节16  绘制图像——处理图像 185
细节17  操作磁盘图像——使用ImageIO处理图像 186
细节18  画龙点睛——使用图标 187
细节19  不同凡响——绘制列表框的内容 188
细节20  随心所欲——绘制树节点图标 190
细节21  美观大方——绘制表格的单元格内容 191
细节22  秩序井然——表格列的排序 193
细节23  静观其变——监听文本控件中内容的变化 194
细节24  合情合理——使用格式文本框 195
细节25  后台运行——使用系统托盘 196
细节26  首当其冲——加载数据库驱动与建立连接 198
细节27  究其根源——传递SQL语句 199
细节28  为我所用——操作结果集 200
细节29  随心所欲——可滚动的结果集 202
细节30  同命相连——可更新的结果集 203
细节31  才思敏捷——执行预处理语句 205
细节32  择优录用——调用存储过程 207
细节33  同舟共济——进行事务处理 209
第4篇  编程技巧——程序员的神兵利器
第7章  细说开发人员必知必会的19个基本技能开发技巧 212
技巧1  获得需要的数值——数值的舍入处理 213
技巧2  格式化数值——使用NumberFormat 214
技巧3  格式化日期——使用DateFormat 215
技巧4  长度不等于个数——统计字符串的实际长度 216
技巧5  计算最大天数——判断指定年月的最大天数 217
技巧6  实现递归——使用Stack实现递归方法功能 218
技巧7  大写金额——小写金额转换为大写金额 219
技巧8  汉字区位码——汉字转换为区位码 220
技巧9  区位转汉字——区位码转换为汉字 221
技巧10  异或加解密——使用异或进行加密与解密 222
技巧11  字符串加解密——使用String类加解密 223
技巧12  有效的身份证号——验证18位身份证格式 224
技巧13  正确的IP地址——验证IP地址的有效性 226
技巧14  正确的E-mail——用正则表达式判断邮箱 226
技巧15  有效的邮编——使用正则表达式判断邮编 227
技巧16  去除空格——去除字符串的全部空格 228
技巧17  逆序输出——反转字符串 229
技巧18  中英文判断——判断字符是英文还是汉字 229
技巧19  自动编号——根据计算机信息生成编号 230
第8章  细说开发人员必知必会的31个交互式开发技巧 232
技巧1  与省市级联的市县——根据省/直辖市显示对应的市县 233
技巧2  受限的文本框——限制可输入字符个数的文本框 234
技巧3  防止数据丢失——关闭窗体前提示 235
技巧4  美化窗体——设置窗体的背景 236
技巧5  特殊按钮——制作不规则按钮 237
技巧6  背景工具栏——制作带背景的工具栏 238
技巧7  受限的窗体——限制窗体的大小 239
技巧8  透明窗体——设置窗体透明度 240
技巧9  启动界面——实现系统闪屏 240
技巧10  辅助录入——使用回车键移动焦点 242
技巧11  数值输入——只能输入数值的文本框 242
技巧12  锁定列标题——使表格的列标题不能移动 243
技巧13  修饰表格——制作带背景图片的表格 244
技巧14  谜语猜猜看——猜谜语 245
技巧15  运行外部程序——运行可执行文件 248
技巧16  打开网页——运行网页 249
技巧17  播放音频——音频播放程序 250
技巧18  幸运抽奖——随机抽取双色球号码 251
技巧19  有记忆功能的菜单——带历史记录的菜单 252
技巧20  导航主界面——按钮导航界面 254
技巧21  树形主界面——树形导航界面 255
技巧22  关机操作——关闭、重启和注销计算机 257
技巧23  节省资源——定时关机 258
技巧24  定时听音乐——定时播放MP3 259
技巧25  定时提醒——闹铃程序 260
技巧26  保护资源——锁屏程序 261
技巧27  重要日期提醒——时间提示程序 262
技巧28  窗体居中——在屏幕上居中显示窗体 263
技巧29  带行标题表格——有多列行标题栏的表格 264
技巧30  选择数据——双击单元格显示组合框 266
技巧31  指定列宽——设置表格指定列的宽度 268
第9章  细说开发人员必知必会的19个数据库开发应用技巧 270
技巧1  提高组合框添加数据的效率——向组合框添加列表项的通用类 271
技巧2  表格快速显示数据的工具——在表格中 显示数据的通用类 272
技巧3  提高系统性能——优化SQL语句 274
技巧4  使用JDBC事务——批量操作数据记录 275
技巧5  解决乱码——防止MySQL乱码 276
技巧6  保护数据——备份与恢复MySQL数据库 278
技巧7  存储图片文件——在数据库中存储图片 279
技巧8  读取图片文件——从数据库中读取图片 281
技巧9  存储纯文本文件——将纯文本文件存储到数据库中 282
技巧10  读取纯文本文件——从数据库中读取纯文本文件 283
技巧11  存储特殊字符——存储含特殊字符的信息 284
技巧12  资源定位——获取指定区间的记录 285
技巧13  分组排序——分组统计与排序 286
技巧14  显示所有表——获取数据库中的所有表 287
技巧15  多表查询——进行多表连接查询 289
技巧16  分析表结构——获得表结构信息 290
技巧17  提高数据处理速度——调用存储 过程计算员工的平均年龄 291
技巧18  存储Date对象——在数据库中存储Date日期对象 293
技巧19  读取数据库的dateTime列——获取数据库中 datetime列的数据 294
第10章  细说开发人员必知必会的18个文件与网络开发技巧 296
技巧1  文件列表——使用树显示本地文件列表 297
技巧2  备份文件——复制文件 300
技巧3  更改位置——移动文件 302
技巧4  废弃的文件——删除文件 302
技巧5  备份文件夹——复制整个文件夹 303
技巧6  清理文件夹——删除整个文件夹 304
技巧7  更改位置——移动整个文件夹 305
技巧8  文件瘦身——压缩与解压缩文件 306
技巧9  文件夹瘦身——压缩与解压缩文件夹 308
技巧10  解决冲突——实现文件锁定 310
技巧11  所占空间——获取文件夹大小 311
技巧12  解决读写文件乱码——用DataInputStream和 DataOutputStream类
技巧12  读写文件乱码 311
技巧13  解决读文件乱码——使用FileReader读文件乱码 313
技巧14  网络传递汉字——使用Socket传递汉字 313
技巧15  网络传递对象——使用Socket传递对象 315
技巧16  网络操作——获取网络资源的大小 317
技巧17  操作网页——解析网页中的内容 318
技巧18  下载资源——网络资源的下载 319
第11章  细说开发人员必知必会的10个图形图像与动画程序开发技巧 321
技巧1  防止攻击——生成验证码 322
技巧2  防止攻击——使用反射加载生成的验证码 323
技巧3  动态加载——在文本框中动态加载文本 324
技巧4  键盘操作图片——通过键盘移动图片 326
技巧5  图片动画——随鼠标移动图片 327
技巧6  图片动画——跑马灯效果 329
技巧7  换图动画——不断变化的图片 331
技巧8  文字特效——文字淡入淡出 333
技巧9  缩放特效——实现文字缩放动画 334
技巧10  图片显示特效——淡入淡出的图片 336
第5篇  算法与效率——程序员的得力助手
第12章  细说开发人员必须掌握的20个常用算法 340
算法1  排序算法——起泡排序 341
算法2  排序算法——选择排序 344
算法3  排序算法——插入排序 347
算法4  排序算法——归并排序 350
算法5  查找算法——顺序查找 353
算法6  查找算法——二分查找 357
算法7  后进先出——堆栈 358
算法8  单线联系——单向链表算法 365
算法9  双线联系——双向链表算法 369
算法10  先进先出——队列 373
算法11  层层相连——树 376
算法12  算法应用——素数 382
算法13  趋近理想的查找——散列技术 384
算法14  算法应用——汉诺塔 387
算法15  算法应用——斐波那契数列 388
算法16  算法应用——水仙花树 389
算法17  算法应用——百钱买百鸡 390
算法18  算法应用——韩信点兵 391
算法19  加密算法——SHA加密 392
算法20  加密算法——MD5加密 394
第6篇  解决方案——前人的经验精髓
第13章  登录、带权限主界面和软件注册实施方案 398
方案1  安全登录——实现系统登录 399
方案2  限制用户——带权限的主界面 404
方案3  随机应变——在闪屏界面中绘制启动信息 407
方案4  注册程序——应用程序注册 411
第14章  文件和图形图像处理解决方案 419
方案1  画龙点睛——实现水印 420
方案2  处理大文件——文件的分割与合并 423
方案3  批量操作——文件批量处理 429
方案4  画图程序——简易画图板 452
第15章  相册照片管理和游戏开发解决方案 457
方案1  相册管理——精美相册 458
方案2  管理照片——数码照片 468
方案3  合情合理——拼图游戏 478
第16章  数据库应用、安全与打印报表实施方案 484
方案1  数据表结构——MySQL表结构提取器 485
方案2  安全管理——MySQL数据库的自动备份与恢复 495
方案3  在线考试——考试系统 507
方案4  打印数据——报表打印 528