Java经典实例(第四版)
Ian F. Darwin
苏金国 译
出版时间:2023年03月
页数:682
“Java快节奏的开发和发布周期可能让人无所适从。这本非凡的书经过精心设计,提供了常见任务的解决方案,会帮助你跟进Java语言的发展。这确实是一个不可或缺的绝好资源。”
——Daniel Hinojosa
开发人员、培训师和宣讲师

随着Java继续发展和演进,这本书也在不断修订和改版。利用这本指南,你会快速掌握数百个实战技巧,内容涵盖诸多Java主题。你将学习从字符串处理、函数式编程到网络通信等各种有用的技术。
每个技巧都包含完整的代码解决方案,你可以免费使用这些代码,另外每个技巧还讨论了如何做以及为什么这样做。如果你已经熟悉Java基础知识,这本经典实例将增进你的Java知识,让你了解Java的最新变化,包括如何在日常开发中运用这些知识。更新的这一版涵盖了Java 12之前版本的全部内容以及Java 13和Java 14的部分内容。
本书的主要内容包括:
● 编译、运行和调试方法。
● 打包Java类和构建应用。
● 处理、比较和重新组织文本。
● 完成字符串和模式匹配的正则表达式。
● 处理数字、日期和时间。
● 利用集合、数组和其他类型建立数据结构。
● 面向对象和函数式编程技术。
● 输入/输出、目录和文件系统操作。
● 客户端和服务器端网络编程。
● 使用JSON实现数据交换。
● 多线程和并发。
● 大数据应用中使用Java。
● Java与其他语言的交互。
  1. 前言
  2. 第1章 入门:编译和运行Java
  3. 1.0 引言
  4. 1.1 编译和运行Java:标准JDK
  5. 1.2 编译和运行Java:GraalVM提高性能
  6. 1.3 用IDE编译、运行和测试
  7. 1.4 用JShell探索Java
  8. 1.5 有效地使用CLASSPATH
  9. 1.6 下载和使用代码示例
  10. 1.7 用Apache Maven自动管理依赖、编译、测试和部署
  11. 1.8 用Gradle自动管理依赖、编译、测试和部署
  12. 1.9 处理废弃警告
  13. 1.10 利用单元测试维护代码正确性:JUnit
  14. 1.11 利用持续集成维护代码
  15. 1.12 获取可读的栈轨迹
  16. 1.13 查找更多Java源代码
  17. 1.14 查找可运行的Java库
  18. 第2章 环境交互
  19. 2.0 引言
  20. 2.1 获得环境变量
  21. 2.2 从系统属性获得信息
  22. 2.3 处理依赖于Java版本或操作系统的代码
  23. 2.4 使用扩展或其他打包API
  24. 2.5 使用Java模块系统
  25. 第3章 字符串相关问题
  26. 3.0 引言
  27. 3.1 利用子串或词法分析分解字符串
  28. 3.2 用StringBuilder合并字符串
  29. 3.3 逐字符处理字符串
  30. 3.4 字符串对齐、缩进和取消缩进
  31. 3.5 Unicode字符与字符串之间的转换
  32. 3.6 按单词或字符逆转字符串
  33. 3.7 展开和压缩制表符
  34. 3.8 控制大小写
  35. 3.9 输入非打印字符
  36. 3.10 删除字符串末尾的空白符
  37. 3.11 使用国际化资源创建消息
  38. 3.12 使用特定的本地化环境
  39. 3.13 创建资源包
  40. 3.14 程序:一个简单的文本格式化工具
  41. 3.15 程序:Soundex名字比较
  42. 第4章 使用正则表达式实现模式匹配
  43. 4.0 引言
  44. 4.1 正则表达式语法
  45. 4.2 在Java中使用正则表达式:测试模式
  46. 4.3 查找匹配文本
  47. 4.4 替换匹配文本
  48. 4.5 打印一个模式的所有匹配
  49. 4.6 打印包含一个模式的行
  50. 4.7 用正则表达式控制大小写
  51. 4.8 匹配重音或组合字符
  52. 4.9 匹配文本中的换行符
  53. 4.10 程序: Apache日志文件解析
  54. 4.11 程序: 完整的Grep
  55. 第5章 数字
  56. 5.0 引言
  57. 5.1 检查字符串是否是一个合法的数
  58. 5.2 数字与对象的转换
  59. 5.3 直接使用分数而不使用浮点数
  60. 5.4 处理浮点数
  61. 5.5 格式化数字
  62. 5.6 二进制、八进制、十进制和十六进制间的转换
  63. 5.7 处理整数序列
  64. 5.8 格式化为正确的复数形式
  65. 5.9 生成随机数
  66. 5.10 矩阵乘法
  67. 5.11 使用复数
  68. 5.12 处理非常大的数
  69. 5.13 程序:TempConverter
  70. 5.14 程序:数字回文
  71. 第6章 日期和时间
  72. 6.0 引言
  73. 6.1 获得当天日期
  74. 6.2 格式化日期和时间
  75. 6.3 日期/时间、YMDHMS和纪元秒之间的转换
  76. 6.4 将字符串解析为日期
  77. 6.5 两个日期之差
  78. 6.6 日期加上或减去一个时间段
  79. 6.7 处理重复事件
  80. 6.8 计算涉及时区的日期
  81. 6.9 与遗留Date和Calendar类交互
  82. 第7章 Java数据结构
  83. 7.0 引言
  84. 7.1 用数组建立数据结构
  85. 7.2 调整数组大小
  86. 7.3 集合框架
  87. 7.4 与数组类似,但更动态
  88. 7.5 自己的类中使用泛型类型
  89. 7.6 所有迭代方法
  90. 7.7 用Set避免重复
  91. 7.8 用链表建立数据结构
  92. 7.9 用Hashtable和HashMap建立映射
  93. 7.10 在Properties和Preferences中存储字符串
  94. 7.11 集合排序
  95. 7.12 避免显式排序
  96. 7.13 在集合中查找对象
  97. 7.14 将一个Collection转换为数组
  98. 7.15 使数据可迭代
  99. 7.16 使用对象栈
  100. 7.17 多维结构
  101. 7.18 用Lombok或Record简化数据对象
  102. 7.19 程序:计时比较
  103. 第8章 面向对象技术
  104. 8.0 引言
  105. 8.1 对象方法:用toString()格式化对象,用equals比较对象
  106. 8.2 使用内部类
  107. 8.3 通过接口提供回调
  108. 8.4 多态/抽象方法
  109. 8.5 使用类型安全的枚举
  110. 8.6 用Optional避免NPE
  111. 8.7 保证单例模式
  112. 8.8 创建自己的异常
  113. 8.9 使用依赖注入
  114. 8.10 程序:绘图仪
  115. 第9章 函数式编程技术:函数接口、流和并行集合
  116. 9.0 引言
  117. 9.1 使用Lambda/Closures而不是内部类
  118. 9.2 使用lambda预定义接口而不是自定义接口
  119. 9.3 用Stream简化处理
  120. 9.4 用Collector简化流
  121. 9.5 用并行流和集合提高吞吐量
  122. 9.6 利用方法引用将已有代码用作为函数式接口
  123. 9.7 Java Mixin:方法混入
  124. 第10章 输入和输出:读、写和目录技巧
  125. 10.0 引言
  126. 10.1 关于InputStream/OutputStream和Reader/Writer
  127. 10.2 读文本文件
  128. 10.3 从标准输入或控制台/控制终端读取
  129. 10.4 用Formatter和printf打印
  130. 10.5 用StreamTokenizer扫描输入
  131. 10.6 用Scanner类扫描输入
  132. 10.7 扫描有语法结构的输入
  133. 10.8 复制文件
  134. 10.9 重新分配标准流
  135. 10.10 写时复制流,重新分配标准流
  136. 10.11 读/写不同的字符集
  137. 10.12 讨厌的行尾字符
  138. 10.13 当心依赖平台的文件代码
  139. 10.14 读/写二进制数据
  140. 10.15 读写JAR或ZIP归档
  141. 10.16 使用getResource()和getResourceAsStream()采用文件系统中立方式查找文件
  142. 10.17 获取文件信息:Files和Path
  143. 10.18 创建新文件或目录
  144. 10.19 改变文件名或其他属性
  145. 10.20 删除文件
  146. 10.21 创建瞬时/临时文件
  147. 10.22 列出目录内容
  148. 10.23 获得目录的根
  149. 10.24 使用FileWatcher服务得到文件变更通知
  150. 10.25 程序:将用户数据保存到磁盘
  151. 10.26 程序:查找—遍历文件树
  152. 第11章 数据科学与R
  153. 11.1 使用Java完成机器学习
  154. 11.2 在Apache Spark中使用数据
  155. 11.3 交互式使用R
  156. 11.4 比较/选择R实现
  157. 11.5 在Java应用中使用R:Renjin
  158. 11.6 从R会话使用Java
  159. 11.7 使用FastR(R的GraalVM实现)
  160. 11.8 在Web应用中使用R
  161. 第12章 网络客户端
  162. 12.0 引言
  163. 12.1 HTTP/REST Web客户端
  164. 12.2 连接socket服务器
  165. 12.3 查找和报告网络地址
  166. 12.4 处理网络错误
  167. 12.5 读写文本数据
  168. 12.6 读写二进制或串行化数据
  169. 12.7 UDP数据报
  170. 12.8 URI, URL还是URN?
  171. 12.9 程序: TFTP UDP客户端
  172. 12.10 程序:基于Socket的聊天客户端
  173. 12.11 程序:简单的HTTP链接检查工具
  174. 第13章 服务器端Java
  175. 13.0 引言
  176. 13.1 打开服务器Socket
  177. 13.2 查找网络接口
  178. 13.3 返回响应(字符串或二进制数据)
  179. 13.4 通过网络连接返回对象信息
  180. 13.5 处理多个客户端
  181. 13.6 提供HTTP协议
  182. 13.7 用SSL和JSSE保护Web服务器
  183. 13.8 用JAX-RS创建REST服务
  184. 13.9 网络日志
  185. 13.10 创建SLF4J
  186. 13.11 使用Log4j生成网络日志
  187. 13.12 用java.util.logging生成网络日志
  188. 第14章 处理JSON数据
  189. 14.0 引言
  190. 14.1 直接生成JSON
  191. 14.2 用Jackson解析和写JSON
  192. 14.3 用org.json解析和写JSON
  193. 14.4 用JSON-B解析和写JSON
  194. 14.5 用JSON Pointer查找JSON元素
  195. 第15章 包和打包
  196. 15.0 引言
  197. 15.1 创建包
  198. 15.2 用Javadoc建立类文档
  199. 15.3 超越Javadoc:注解/元数据
  200. 15.4 准备一个类作为JavaBean
  201. 15.5 用JAR归档
  202. 15.6 从一个JAR运行程序
  203. 15.7 将Web层组件打包到WAR文件
  204. 15.8 用jlink创建更小的发布包
  205. 15.9 使用JPMS创建模块
  206. 第16章 Java线程
  207. 16.0 引言
  208. 16.1 在不同线程中运行代码
  209. 16.2 用动画显示动图
  210. 16.3 停止线程
  211. 16.4 交会和超时
  212. 16.5 用synchronized关键字同步线程
  213. 16.6 用锁简化同步
  214. 16.7 用Queue接口简化生产者/消费者
  215. 16.8 用Fork/Join优化并行处理
  216. 16.9 调度任务:将来,编辑器的后台保存
  217. 第17章 反射或“名为Class的类”
  218. 17.0 引言
  219. 17.1 获得类描述符
  220. 17.2 查找和使用方法和字段
  221. 17.3 通过反射访问私有方法和字段
  222. 17.4 动态加载和实例化一个类
  223. 17.5 用ClassLoader从头构造一个类
  224. 17.6 用JavaCompiler从头构造一个类
  225. 17.7 性能计时
  226. 17.8 打印类信息
  227. 17.9 列出一个包中的类
  228. 17.10 使用和定义注解
  229. 17.11 通过注解查找类似插件的类
  230. 17.12 程序: CrossRef
  231. 第18章 结合使用Java和其他语言
  232. 18.0 引言
  233. 18.1 从Java运行外部程序
  234. 18.2 运行程序并捕获输出
  235. 18.3 通过javax.script调用其他语言
  236. 18.4 用GraalVM混合语言
  237. 18.5 结合Java和Perl
  238. 18.6 通过原生代码调用其他语言
  239. 18.7 从原生代码调用Java
  240. 附录 Java前世今生
  241. 后记
书名:Java经典实例(第四版)
作者:Ian F. Darwin
译者:苏金国 译
国内出版社:中国电力出版社
出版时间:2023年03月
页数:682
书号:978-7-5198-6973-1
原版书书名:Java Cookbook, Fourth 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技术。
 
 
本书封面上的动物是一只家养的鸡(高卢鸡,学名:Gallus domesticus)。家鸡是印度野生红丛林禽类的后代。在现在的越南和泰国地区经过了8000多年的驯化,人们养鸡是为了吃肉和鸡蛋,公鸡还用于斗鸡活动(不过目前在很多地方斗鸡是非法的)。
由于它们的身体大而笨重,翅膀很小,这些禽类非常适合在地面上生活,它们只能飞很短的距离。它们的四趾爪子用来刨土,在泥土中可以找到它们平常吃的美味:虫子、甲虫、种子和各种植物碎屑。
雄性叫作公鸡,雌性叫作母鸡。鸡蛋的孵化期约为三周,刚孵出的小鸡能独立活动,这意味着它们有毛茸茸的羽毛,从蛋壳里出来后就能自己行走。它们也不依赖妈妈喂食,小鸡不仅可以自己觅食,出生后靠着留在肚子里的蛋黄还能存活一周。
鸡的话题在古代作品中经常出现。中国文献记载,鸡是在公元前1400年传入中国的,巴比伦公元前600年的雕刻中就有鸡,古希腊作家阿里斯托芬(Aristophanes)在公元前400年也写过鸡。长期以来,公鸡一直是勇气的象征:罗马人认为鸡是战神Mars的圣物,法兰西第一共和国选择公鸡作为共和国象征。
封面插图由Karen Montgomery根据Dover中的一幅黑白版画绘制。
购买选项
定价:198.00元
书号:978-7-5198-6973-1
出版社:中国电力出版社