《Java开发之道》是2011年出版的图书,作者是张振坤李亮钟尉陈丹丹。
- 书名 Java开发之道
- 作者 张振坤 李钟尉 陈丹丹
- 出版时间 2011年3月
- 页数 564 页
- 定价 69.00元含(含光盘1张)
宣传语
高薪工程师经验分享
事半功倍的编程手记
凝聚5位开发高手4年开发心血精华所得,程序开发人员开发的必备宝典
253个感悟、技巧、陷阱、谬误、算法和方案,
帮您轻松掌握程序代省请草牛开发方法,提升开发实战技能。
作者
本丛书的作者团队对计算机程序来自设计类图书市场有很好的敏感性,对出版动态有准确的把握,对计算机技术的发展进行长期跟踪。该团队长期以来致力于计算机图书的内容提供和策划,已经出版的多个系列图书都在计算机图书市场上有良好的新加设固口碑,都曾经引领了当年的计算机程序设计畅销书。
简 介
这是一本集编程感悟、技巧、陷阱、谬误、算法和方案为一体来自的编程书籍,旨在引导读者如何学习编程,帮助读者丰富编程经验。全书分为6篇,共计16章内容,全面介绍了学习和应用Java进行程序开发的各种陷阱与谬误、技术细节与编程技巧、常用的算法及解决方案,涉及主要包括Java语言关键技术、Swing技术、JDBC、文件、序标千传这若盟衡列化对象、网络、反射、线程、图形图像、动画、算法、方案和数据库应用等的相关技术细节、技巧以及实施方案。
本书附带有配套CD光盘,光盘中提赶旧秋七良供了书中全部实例和项目的源代码,这些源代码都是经过作者精心调试通过的,保证能够在Windows XP、Windows 2003及Windows 7操作系统下编译和运行。
本书非常适合大中专院校在校生、毕业生、求职者、编程爱好者学习,同时也可以作为想要学习编程的初级人员的指导用书。
前 言
许多求职人员在面试时经常遇到的一个问题是"您有360百科几年开发经验?"这对于一个刚刚走出校园的毕业生来说,简直就是一颗"原子弹"。"经验"真的很重要吗?是的,它是衡量个人能力的砝码,它将许多求职者挡在了名企的门外。
本书不是基础类书籍,不是项目、案例类书籍,它是一本积累编程经验的书籍。本书包括信教钱头处书款了80个编程细节、97个编缺任收只拉程求明死频程技巧、21个编程陷阱、20屋应个编程谬误、20个优化血温田算法和15个解决方案。这服名宽氧段更赶儿已些内容是作者结合自己多年的实际开发经验,精心筛选和提炼而成的。如果您想提高自己的编程能力,本书将是最佳的选择!
本书内容
本书包含6大部分,共16章内容,主要包括编程经验与感悟、陷阱与谬误、技术细节、编程技巧、算法与效率、解决方案等找研率胞模内容。
本书的内容结构如下图所示。
本书特色
内容经原第族请达正典、汇聚精华
书中每项内容都是由作者精心选择的,具有很强的代表性和实用性。
讲解风趣、诙谐生动
无论是在目录酸居器万跳饭顶害玉法双名称上还是在技术讲解上,始终突出趣味性。在目录选择上,作者想尽办法使目录更新颖,更能够体现内容的特点。在技术讲解中,通过穿插故事、比喻等形式,帮州娘这自全办损质报助读者消化和吸收所介绍的内容。
知无不言、言无不尽
书中在介绍知识点时,对相应专题进行了深入剖析,使知识点呈现系统性、全面性的特点,避免出现一笔带过、言之无物的情采河秋况。
图文并茂、形象易懂
书中使用了大量的流程图、示意图及图变任且态田间例来说明和演示技术,帮助读者更直观地理解书中的内容。
代码规范、注释详尽
书中的实例代码都是按照商业啊编码规范来书写的,为了方便用户阅读代码,几乎所有的代码都提供有详细的注释。
private Conne听供器乡玉军演合ction conn=nul认雨理推振l; //声明连接
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