Java经典实例(第3版)
Ian F. Darwin
李新叶, 余晓晔 译
出版时间:2016年07月
页数:836
从lambda表达式、JavaFX 8,到网络编程和支持移动设备等方面,Java 8都有许多更新。本书包含了数百个经过实践验证的技巧,内容涵盖了广泛的Java主题,可帮助你快速进入编程状态。你可以从中学到一切有用的技术,包括调试、数据结构、GUI开发和函数编程。
本书的每个技巧既给出了代码部分,也给出了运行结果,还有对它们的讨论。你可以免费使用这些代码。如果你对Java基础知识比较熟悉,学习本书将使你进一步掌握语言方面的通用知识和Java 8中主要API方面的特殊知识。

本书的主题包括:
● 用于编译、运行和调试的方法。
● 对文本的处理、比较和重新安排。
● 用于字符串匹配和模式匹配的正则表达式。
● 处理数字、日期和时间。
● 使用集合、数组和其他类型实现数据的结构化。
● 面向对象技术和函数编程技术。
● 目录和文件系统运算符。
● 使用图形、视频和音频。
● GUI开发,包括JavaFX和处理器。
● 客户端和服务器端的网络编程。
● 数据库访问,使用JPA、Hibernate和JDBC。
● 处理JSON和用于数据存储的XML。
● 多线程和并发机制。
  1. 前言
  2. 第1章 入门:编译、运行和调试Java程序
  3. 1.0 引言
  4. 1.1 编译和运行Java程序:JDK方式
  5. 1.2 用带语法高亮显示的编辑器编辑和编译程序
  6. 1.3 使用IDE编译、运行和测试程序
  7. 1.4 有效使用CLASSPATH
  8. 1.5 下载和使用代码示例
  9. 1.6 使用Ant工具自动编译
  10. 1.7 使用Apache Maven自动设置依赖关系、编译、测试和部署
  11. 1.8 使用Gradle自动设置依赖关系、编译、测试和部署
  12. 1.9 处理过期警告
  13. 1.10 没有#ifdef的条件编译
  14. 1.11 使用断言机制维护程序的正确性
  15. 1.12 使用JDB调试
  16. 1.13 用单元测试避免调试
  17. 1.14 用持续集成维护代码
  18. 1.15 获取可读回溯
  19. 1.16 更多的Java源代码:程序、框架和库
  20. 第2章 与运行环境交互
  21. 2.0 引言
  22. 2.1 获得环境变量
  23. 2.2 从系统属性获得信息
  24. 2.3 了解当前的JDK版本
  25. 2.4 编写操作系统相关的代码
  26. 2.5 使用扩展包或其他API包
  27. 2.6 解析命令行参数
  28. 第3章 字符串
  29. 3.1 用Substring分解字符串
  30. 3.2 将字符串分解成词
  31. 3.3 用StringBuilder连接字符串
  32. 3.4 处理单个字符串
  33. 3.5 字符串对齐
  34. 3.6 Unicode字符和String之间的转换
  35. 3.7 按单词或字符颠倒字符串
  36. 3.8 扩展和压缩Tab
  37. 3.9 控制字母大小写
  38. 3.10 缩排文本文档
  39. 3.11 输入非打印字符
  40. 3.12 删除字符串的尾部空格
  41. 3.13 解析用逗号分隔的数据
  42. 3.14 程序:一个简单的文本格式化工具
  43. 3.15 程序:Soundex算法
  44. 第4章 正则表达式的模式匹配
  45. 4.0 引言
  46. 4.1 正则表达式语法
  47. 4.2 在Java中使用正则表达式:测试模式
  48. 4.3 找到匹配的文本
  49. 4.4 替换匹配的文本
  50. 4.5 打印匹配的所有字符串
  51. 4.6 打印包含一个模式的行
  52. 4.7 在正则表达式中控制大小写
  53. 4.8 匹配“重音符”或复合字符
  54. 4.9 在文本中匹配换行符
  55. 4.10 程序:Apache日志文件解析
  56. 4.11 程序:数据挖掘
  57. 4.12 程序:完整的Grep
  58. 第5章 数字
  59. 5.0 引言
  60. 5.1 检查字符串是否是有效数字
  61. 5.2 用小数据类型储存大数据类型的数字
  62. 5.3 数字与对象的相互转换
  63. 5.4 直接使用分数而不用浮点数
  64. 5.5 保证浮点数的准确
  65. 5.6 比较浮点数
  66. 5.7 舍入浮点数
  67. 5.8 格式化数字
  68. 5.9 二进制、八进制、十进制和十六进制之间的转换
  69. 5.10 对整数序列的操作
  70. 5.11 使用罗马数字
  71. 5.12 复数的正确格式化
  72. 5.13 生成随机数
  73. 5.14 计算三角函数
  74. 5.15 取对数
  75. 5.16 矩阵乘法
  76. 5.17 使用复数
  77. 5.18 处理非常大的数字
  78. 5.19 程序:TempConverter
  79. 5.20 程序:数字回文
  80. 第6章 日期和时间——新的API
  81. 6.0 引言
  82. 6.1 查看当天日期
  83. 6.2 日期和时间的格式化
  84. 6.3 日期/时间、YMDHMS和 纪元秒(Epoch Seconds) 之间的转换
  85. 6.4 将字符串解析为日期
  86. 6.5 两个日期之间的差
  87. 6.6 日期或日历的加减
  88. 6.7 与传统日期和日历类的接口
  89. 第7章 结构化数据
  90. 7.0 引言
  91. 7.1 使用数组
  92. 7.2 调整数组长度
  93. 7.3 集合框架
  94. 7.4 动态数组列表
  95. 7.5 使用泛型集合
  96. 7.6 使用泛型避免强制类型转换
  97. 7.7 迭代器的使用方式
  98. 7.8 使用Set避免元素重复存储
  99. 7.9 使用迭代器或枚举
  100. 7.10 链表结构
  101. 7.11 使用Hashtable和HashMap进行映射
  102. 7.12 Properties类和Preferences类
  103. 7.13 对集合排序
  104. 7.14 避免频繁排序
  105. 7.15 在集合中查找对象
  106. 7.16 将集合转换为数组
  107. 7.17 自定义迭代器
  108. 7.18 堆栈
  109. 7.19 多维结构
  110. 7.20 程序:运行时间比较
  111. 第8章 面向对象技术
  112. 8.0 引言
  113. 8.1 使用toString()格式化对象并输出
  114. 8.2 覆盖equals()和hashCode()方法
  115. 8.3 使用关闭钩子清理程序
  116. 8.4 使用内部类
  117. 8.5 通过接口提供回调
  118. 8.6 多态性/抽象方法
  119. 8.7 传递数值
  120. 8.8 使用类型安全的枚举
  121. 8.9 Singleton模式
  122. 8.10 自定义异常
  123. 8.11 使用依赖注入
  124. 8.12 程序:绘图仪
  125. 第九章 函数式编程技术:函数接口、流、并行集合
  126. 9.0 引言
  127. 9.1 使用lambda/Closure替代内部类
  128. 9.2 使用lambda预定义接口
  129. 9.3 使用流
  130. 9.4 使用并行流与集合提高吞吐量
  131. 9.5 创建自己的函数式接口
  132. 9.6 函数引用
  133. 9.7 Java Mixins:方法混合
  134. 第10章 输入与输出
  135. 10.0 引言
  136. 10.1 从标准输入设备读取数据
  137. 10.2 从控制台或控制终端读取数据,隐藏读取密码
  138. 10.3 向标准输出或标准错误流写数据
  139. 10.4 使用Formatter和printf输出
  140. 10.5 使用Stream Tokenizer的扫描输入
  141. 10.6 使用Scanner类扫描输入
  142. 10.7 使用语法结构扫描输入
  143. 10.8 按文件名打开文件
  144. 10.9 复制文件
  145. 10.10 把文件读入一个字符串
  146. 10.11 重新分配标准流
  147. 10.12 复制一个流
  148. 10.13 读/写不同的字符集
  149. 10.14 行结束符
  150. 10.15 平台相关的文件编码
  151. 10.16 阅读“连续”行
  152. 10.17 读/写二进制数据
  153. 10.18 在文件中定位
  154. 10.19 处理C程序写的数据流
  155. 10.20 存储和还原Java对象
  156. 10.21 防止ClassCastExceptions异常
  157. 10.22 读写JRA或Zip文档
  158. 10.23 利用get Resource()和getResourceAsStream()获得文件
  159. 10.24 读写压缩文件
  160. 10.25 了解串行和并行端口的通信API
  161. 10.26 将用户数据保存到磁盘
  162. 10.27 程序:将文本输出为PostScript格式
  163. 第11章 目录和文件系统操作
  164. 11.0 引言
  165. 11.1 获取文件信息
  166. 11.2 创建一个文件
  167. 11.3 重命名一个文件
  168. 11.4 删除一个文件
  169. 11.5 创建临时文件
  170. 11.6 改变文件属性
  171. 11.7 列出目录内容
  172. 11.8 获取根目录
  173. 11.9 创建新的目录
  174. 11.10 使用路径而不是文件
  175. 11.11 使用FileWatcher 服务得到文件变化的通知
  176. 11.12 程序:Find
  177. 第12章 媒体:图形、音频、视频
  178. 12.0 引言
  179. 12.1 使用Graphics对象画图
  180. 12.2 无需编写主函数显示图形组件
  181. 12.3 绘制文本
  182. 12.4 在组件中央绘制文本
  183. 12.5 绘制阴影
  184. 12.7 使用应用程序字体绘制文本
  185. 12.8 绘制图像
  186. 12.9 使用javax.imageio读写图像
  187. 12.10 播放音频/语音文件
  188. 12.11 播放视频文件
  189. 12.12 在Java中打印
  190. 12.13 程序:PlotterAWT
  191. 12.14 程序:Grapher
  192. 第13章 网络客户端
  193. 13.0 引言
  194. 13.1 访问服务器
  195. 13.2 查找和报告网络地址
  196. 13.3 处理网络错误
  197. 13.4 读写文本数据
  198. 13.5 读写二进制数据
  199. 13.6 读写串行化数据
  200. 13.7 UDP数据报
  201. 13.8 程序:TFTP的UDP客户端
  202. 13.9 URI、URL,还是URN?
  203. 13.10 轻量级Web服务客户端
  204. 13.11 SOAP Web服务客户端
  205. 13.12 程序:Telnet客户端
  206. 13.13 程序:聊天客户端
  207. 13.14 程序:简单的HTTP链接检查器
  208. 第14章 图形用户界面
  209. 14.0 引言
  210. 14.1 显示GUI(图形用户界面)组件
  211. 14.2 在事件调度线程上运行GUI
  212. 14.3 设计一个窗口布局
  213. 14.4 选项卡视图
  214. 14.5 事件处理:使按钮工作
  215. 14.6 使用匿名内部类进行事件处理
  216. 14.7 使用Lambdas的事件处理
  217. 14.8 用“窗口关闭”来终止程序
  218. 14.9 对话框
  219. 14.10 捕捉和格式化GUI异常
  220. 14.11 在窗口上打印
  221. 14.12 使用JSpinner选择一个值
  222. 14.13 用JFileChoose选择一个文件
  223. 14.14 选择一种颜色
  224. 14.15 用HTML格式化jcomponents
  225. 14.16 将主窗口居中显示
  226. 14.17 改变Swing程序的外观和感觉
  227. 14.18 改进MAC OS X下的Swing GUI
  228. 14.19 使用JavaFX构建GUI应用程序
  229. 14.20 程序:定制字体选择器
  230. 14.21 程序:定制AWT/Swing布局管理器
  231. 第15章 国际化和本地化
  232. 15.0 引言
  233. 15.1 用I18N资源创建一个按钮
  234. 15.2 列出可用的语言环境
  235. 15.3 使用I18N资源创建菜单
  236. 15.4 编写国际化的方便子程序
  237. 15.5 使用I18N资源创建一个对话框
  238. 15.6 创建一个资源包
  239. 15.7 从代码中提取字符串
  240. 15.8 使用特定的语言环境
  241. 15.9 设置默认语言环境
  242. 15.10 使用MessageFormat格式化消息
  243. 15.11 程序:MenuIntl
  244. 15.12 程序:BusCard
  245. 第16章 Java服务器端
  246. 16.0 引言
  247. 16.1 打开服务器套接字
  248. 16.2 返回一个响应(字符串或二进制)
  249. 16.3 通过网络连接返回对象信息
  250. 16.4 处理多个客户端
  251. 16.5 为HTTP协议服务
  252. 16.6 用SSL和JSSE保护Web服务器
  253. 16.7 网络日志
  254. 16.8 使用SLF4J进行网络日志记录
  255. 16.9 使用log4j进行网络日志记录
  256. 16.10 使用java.util.logging进行网络日志记录
  257. 16.11 查找网络接口
  258. 16.12 程序:一个Java聊天服务器
  259. 第17章 Java和电子邮箱
  260. 17.0 引言
  261. 17.1 发送电子邮件:浏览器版本
  262. 17.2 发送电子邮件:真实的
  263. 17.3 启用服务器程序的邮件发送
  264. 17.4 发送MIME邮件
  265. 17.5 提供邮件设置
  266. 17.6 阅读电子邮件
  267. 17.7 程序:MailReaderBean
  268. 17.8 程序:MailClient
  269. 第18章 数据库访问
  270. 18.0 引言
  271. 18.1 用JPA或Hibernate轻松访问数据库
  272. 18.2 JDBC设置和连接
  273. 18.3 连接JDBC数据库
  274. 18.4 发送一个JDBC查询并获取结果
  275. 18.5 使用JDBC准备好的语句
  276. 18.6 在JDBC中使用存储过程
  277. 18.7 使用ResultSet修改数据
  278. 18.8 在RowSet中存储
  279. 18.9 使用SQL更新数据
  280. 18.10 查找JDBC元数据
  281. 18.11 程序:SQLRunner
  282. 第19章 处理JSON数据
  283. 19.0 引言
  284. 19.1 直接生成JSON
  285. 19.2 使用Jackson解析和编写JSON
  286. 19.3 用org.json解析和编写JSON
  287. 第20章 处理XML
  288. 20.0 引言
  289. 20.1 用JAXB在对象与XML之间转换
  290. 20.2 使用序列化实现对象与XML之间的转换
  291. 20.3 通过XSLT转换XML
  292. 20.4 用SAX解析XML
  293. 20.5 用DOM解析XML
  294. 20.6 用XPath查找XML元素
  295. 20.7 用Schema或DTD验证结构
  296. 20.8 用DOM和XML转换器生成自己的XML
  297. 20.9 程序xml2mif
  298. 第21章 包和打包
  299. 21.0 引言
  300. 21.1 创建一个封装包
  301. 21.2 用Javadoc为类写文档
  302. 21.3 超出Javadoc:注解/元数据
  303. 21.4 用jar归档
  304. 21.5 从一个JAR运行一个程序
  305. 21.6 将一个类作为JavaBean
  306. 21.7 将Bean放入一个JAR中
  307. 21.8 打包一个Servlet到WAR文件
  308. 21.9 编写一次,随处安装
  309. 21.10 “编写一次,在Mac OS X上进行安装”
  310. 21.11 Java Web Start
  311. 21.12 签名你的JAR文件
  312. 第22章 Java线程
  313. 22.0 引言
  314. 22.1 在不同线程中运行代码
  315. 22.2 用动画显示运动图像
  316. 22.3 停止一个线程
  317. 22.4 交会和超时
  318. 22.5 用synchronized关键字实现线程同步
  319. 22.6 使用锁简化同步
  320. 22.7 用wait()和notifyAll()同步线程
  321. 22.8 使用队列接口简化生产者/消费者模式
  322. 22.9 用Fork/Join优化并行处理
  323. 22.10 在编辑器的后台保存
  324. 22.11 程序:多线程网络服务器
  325. 22.12 使用Concurrency Utilities简化服务器
  326. 第23章 反射或“命名类的类”
  327. 23.0 引言
  328. 23.1 获取类描述符
  329. 23.2 查找并使用方法和域
  330. 23.3 通过反射访问私有的方法和域
  331. 23.4 动态加载并实例化一个类
  332. 23.5 通过一个ClassLoader从头开始构造一个类
  333. 23.6 性能计时
  334. 23.7 输出类的信息
  335. 23.8 显示包中包含的类清单
  336. 23.9 使用和定义注解
  337. 23.10 通过注解找到类似插件的类
  338. 23.11 程序:CrossRef
  339. 23.12 程序:AppletViewer
  340. 第24章 Java和其他语言的结合
  341. 24.0 引言
  342. 24.1 在Java中运行外部程序
  343. 24.2 运行一个程序并捕捉其输出
  344. 24.3 通过javax.script调用其他语言
  345. 24.4 启动自己的脚本引擎
  346. 24.5 Java和Perl的结合
  347. 24.6 通过本机代码调用其他语言
  348. 24.7 从本机代码中调用Java
  349. 后记
  350. 附录A Java的过去与现在
书名:Java经典实例(第3版)
作者:Ian F. Darwin
译者:李新叶, 余晓晔 译
国内出版社:中国电力出版社
出版时间:2016年07月
页数:836
书号:978-7-5123-8775-1
原版书书名:Java Cookbook, 3rd Edition
原版书出版商:O'Reilly Media
Ian F. Darwin
 
Ian F. Darwin在计算机行业已经工作了30年。他编写了用于Linux和BSD的免费软件file(1),是《Checking C Programs with Lint》(http://shop.oreilly.com/product/9780937175309.do)、《Java Cookbook》(http://shop.oreilly.com/product/9780596007010.do)的作者并撰写了一百多篇有关C、UNIX、Java及Android的文章和教程。除了编程和顾问工作之外,Ian还为世界最大的技术培训公司——Learning Tree International服务,讲授UNIX、Java和Android技术。