Java经典实例
Java经典实例
Ian F. Darwin
张晓坤, 刘基诚 译
出版时间:2002年08月
页数:840
本书收集了Java程序员经常遇到的成百个问题的解决方案,涵盖了Java应用的方方面面,堪称讲述Java应用的百科全书。书中的实例从正确设置CLASSPATH和读取环境信息这样的简单任务,到应用XML和添加Email功能的完整程序,几乎无所不包。
无论你是否直接使用书中的实例,作为灵感的源泉,作为学习Java的工具,或者用于其他用途,本书都将成为你图书收藏中的珍品。还没有一本书能够如此全面地讲述Java的诸多功能,并能够如此容易地运用到实践当中去。
本书的主题包括:
* 编译、运行和调试Java程序
* 运行环境处理
* 字符串和模式匹配
* 数组和集合的应用
* 并行和串行端口的编程
* 文件系统管理
* 网络编程
* Web编程(含applet)
* Servlet和JSP
* 电子邮件
* 数据库访问
* 应用XML
* 分布式编程
* 内省
* 国际化
* 图形和音频
* 图形用户界面
* 多线程
* 多语言混合编程
本书对于Java程序员而言是理想的“第二本书”(也是理想的自学书籍),讲述API比一般书籍要详细,非常适于扩大Java应用的知识面。
Ian F. Darwin有三十年的计算机软件开发经验,是Learning Tree国际教育公司的讲师和课程设计师。
  1. 前言
  2. 第一章 起步走:编译、运行和调试Java程序
  3. 1.0. 简介
  4. 1.1. 编译和运行Java程序: JDK方式
  5. 1.2. 采用带彩色突出显示的编辑器编辑和编译程序
  6. 1.3. 采用IDE编译、执行和测试程序
  7. 1.4. 使用本书的类
  8. 1.5. 使用脚本文件jr
  9. 1.6. 使用make工具编译和执行Java程序
  10. 1.7. 使用Ant工具自动编译和执行Java程序
  11. 1.8. Applet
  12. 1.9. 处理过期警告
  13. 1.10. 没有#ifdef的条件编译
  14. 1.11. 调试信息的输出
  15. 1.12. 使用调试器
  16. 1.13. 单元测试
  17. 1.14. 反编译Java类文件
  18. 1.15. 防止反编译
  19. 1.16. 获取可读的回溯
  20. 1.17. 更多的Java源程序
  21. 1.18. 例程:Debug
  22. 第二章 Java的运行环境
  23. 2.0. 简介
  24. 2.1. 获取环境变量
  25. 2.2. 系统属性
  26. 2.3. 编写JDK版本相关的代码
  27. 2.4. 编写操作系统相关的代码
  28. 2.5. 有效使用CLASSPATH
  29. 2.6. 使用扩展包或其他API包
  30. 2.7. 解析命令行参数
  31. 第三章 字符串
  32. 3.0. 简介
  33. 3.1. 利用substring()分解字符串
  34. 3.2. 利用StringTokenizer分解字符串
  35. 3.3. 连接字符串
  36. 3.4. 处理单个字符
  37. 3.5. 字符串的对齐
  38. 3.6. Unicode字符与String的转换
  39. 3.7. 颠倒字符串
  40. 3.8. 扩展和压缩TAB符
  41. 3.9. 控制字母大小写
  42. 3.10. 缩排文档
  43. 3.11. 输入非打印字符
  44. 3.12. 删除字符串尾部的空格
  45. 3.13. 解析逗号分隔的数据
  46. 3.14. 例程:一个简单的文本格式化工具
  47. 3.15. 例程:Soundex算法
  48. 第四章 正则表达式的模式匹配
  49. 4.0. 简介
  50. 4.1. 正则表达式的语法
  51. 4.2. 正则表达式的工作原理
  52. 4.3. 在Java中使用正则表达式
  53. 4.4. 测试正则表达式
  54. 4.5. 查找匹配的文本
  55. 4.6. 替换匹配的文本
  56. 4.7. 打印匹配的所有字符串
  57. 4.8. 打印含有模式的行
  58. 4.9. 在match()和subst()方法中控制大小写
  59. 4.10. 预编译正则表达式
  60. 4.11. 匹配时的换行问题
  61. 4.12. 例程: 数据挖掘
  62. 4.13. 例程:完整的Grep
  63. 第五章 数字 129
  64. 5.0. 简介 129
  65. 5.1. 检查字符串是否包含有效数字
  66. 5.2. 数据类型的由大变小
  67. 5.3. 使用分数
  68. 5.4. 确保浮点数的准确性
  69. 5.5. 浮点数的比较
  70. 5.6. 浮点数的舍入
  71. 5.7. 数字的格式化
  72. 5.8. 二进制、八进制、十进制以及十六进制之间的转换
  73. 5.9. 整数序列
  74. 5.10. 罗马数字
  75. 5.11. 名词的复数形式
  76. 5.12. 产生随机数
  77. 5.13. 产生更好的随机数
  78. 5.14. 三角函数的计算
  79. 5.15. 取对数
  80. 5.16. 矩阵乘法
  81. 5.17. 复数
  82. 5.18. 处理特大的数字
  83. 5.19. 例程:TempConverter
  84. 5.20. 例程:数字回文(Numbe Palindrome)
  85. 第六章 日期和时间
  86. 6.0. 简介
  87. 6.1. 查看当前日期
  88. 6.2. 按照指定格式打印日期/时间
  89. 6.3. 用其他历法表示日期
  90. 6.4. 将YMDHMS转换为Calendar对象
  91. 6.5. 将字符串转换为日期
  92. 6.6. 将秒数转换为DMYHMS格式
  93. 6.7. 日期的加减运算
  94. 6.8. 计算日期之间的间隔
  95. 6.9. 比较日期
  96. 6.10. 第几日
  97. 6.11. 日历页
  98. 6.12. 定时器
  99. 6.13. 休眠
  100. 6.14. 例程:提醒服务
  101. 第七章 结构化数据
  102. 7.0. 简介
  103. 7.1. 数组
  104. 7.2. 调整数组的长度
  105. 7.3. Vector类和ArrayList类
  106. 7.4. Iterator(迭代器)
  107. 7.5. 链表
  108. 7.6. 使用Hashtable和HashMap进行映射
  109. 7.7. Properties类和Preferences类
  110. 7.8. 排序
  111. 7.9. Java 1.1的排序
  112. 7.10. 避免频繁地排序
  113. 7.11. Set
  114. 7.12. 搜索对象
  115. 7.13. 将集合转换为数组
  116. 7.14. 自定义Iterator
  117. 7.15. 堆栈
  118. 7.16. 多维结构
  119. 7.17. 集合小结
  120. 7.18. 例程: 运行效率
  121. 第八章 面向对象技术
  122. 8.0. 简介
  123. 8.1. 打印对象:用toString()方法格式化
  124. 8.2. 覆盖equals方法
  125. 8.3. 覆盖hashcode方法
  126. 8.4. Clone方法
  127. 8.5. finalize方法
  128. 8.6. 使用内部类
  129. 8.7. 通过接口进行回调
  130. 8.8. 多态/抽象方法
  131. 8.9. 传值
  132. 8.10. 自定义异常
  133. 8.11. 例程: Plotter
  134. 第九章 输入和输出
  135. 9.0. 介绍
  136. 9.1. 从标准输入设备读取数据
  137. 9.2. 向标准输出设备写数据
  138. 9.3. 按文件名打开文件
  139. 9.4. 复制文件
  140. 9.5. 把文件读入字符串
  141. 9.6. 重定向标准流
  142. 9.7. 复制流
  143. 9.8. 读/写不同字符集的文本
  144. 9.9. 行结束符
  145. 9.10. 平台相关的文件编码
  146. 9.11. 断行再续
  147. 9.12. 扫描文件
  148. 9.13. 读写二进制数据
  149. 9.14. 定位(Seeking)
  150. 9.15. 处理C程序写的数据流
  151. 9.16. 存储和还原串行化对象
  152. 9.17. 防止ClassCastExceptions异常
  153. 9.18. 读写JAR或Zip文档
  154. 9.19. 读写压缩文件
  155. 9.20. 例程: 将文本输出为PostScript格式
  156. 9.21. 例程: TarList
  157. 第十章 目录和文件操作
  158. 10.0. 简介
  159. 10.1. 获取文件信息
  160. 10.2. 创建文件
  161. 10.3. 修改文件名
  162. 10.4. 删除文件
  163. 10.5. 创建临时文件
  164. 10.6. 更改文件属性
  165. 10.7. 列出目录内容
  166. 10.8. 获取根目录
  167. 10.9. 创建新目录
  168. 10.10. 例程:Find
  169. 第十一章 串行和并行接口编程
  170. 11.0. 简介
  171. 11.1. 选择一个端口
  172. 11.2. 打开串行端口
  173. 11.3. 打开并行端口
  174. 11.4. 解决端口冲突
  175. 11.5. 基于端口的读写数据:密步
  176. 11.6. 基于端口的读写数据:事件驱动
  177. 11.7. 基于端口的读写数据:线程
  178. 11.8. 例程:Penman绘图仪
  179. 第十二章 图形与声音
  180. 12.0. 简介
  181. 12.1. 绘制图形
  182. 12.2. 测试图形组件
  183. 12.3. 输出文本
  184. 12.4. 使组件上的文本居中
  185. 12.5. 阴影效果
  186. 12.6. 图像
  187. 12.7. 播放声音文件
  188. 12.8. 播放视频文件
  189. 12.9. 绘制二维艺术字
  190. 12.10. JDK 1.1的打印
  191. 12.11. Java 2的打印
  192. 12.12. 例程: PlotterAWT
  193. 12.13. 例程: Grapher
  194. 第十三章 图形用户界面(GUI)
  195. 13.0. 简介
  196. 13.1. GUI组件
  197. 13.2. 窗体布局
  198. 13.3. 带选项卡的布局
  199. 13.4. 事件处理:让按钮工作起来
  200. 13.5. 使用匿名的内部类进行事件处理
  201. 13.6. 通过“关闭窗体”结束程序
  202. 13.7. 对话框
  203. 13.8. 在窗体上打印数据
  204. 13.9. 使用JFileChooser选择文件
  205. 13.10. 选择颜色
  206. 13.11. 将主窗体居中
  207. 13.12. 修改Swing程序的界面外观
  208. 13.13. 例程:定制字体
  209. 13.14. 例程:定制布局管理器
  210. 第十四章 国际化与本地化
  211. 14.0. 简介
  212. 14.1. 用I18N资源创建按钮
  213. 14.2. 列出有效区域
  214. 14.3. 使用I18N 资源创建菜单
  215. 14.4. 编写国际化的实用子程序
  216. 14.5. 使用I18N 资源包创建对话框
  217. 14.6. 创建资源包
  218. 14.7. 代码的JILT处理
  219. 14.8. 使用指定的区域
  220. 14.9. 设置默认的区域
  221. 14.10. 格式化消息
  222. 14.11. 例程: MenuIntl
  223. 14.12. 例程: BusCard
  224. 第十五章 网络客户端
  225. 15.0. 简介
  226. 15.1. 访问服务器
  227. 15.2. 查找并报告网络地址
  228. 15.3. 处理网络错误
  229. 15.4. 读写文本数据
  230. 15.5. 读写二进制数据
  231. 15.6. 读写串行化数据
  232. 15.7. UDP 数据报
  233. 15.8. 例程: TFTP的UDP客户端
  234. 15.9. 例程: Telnet客户端
  235. 15.10. 例程: 聊天室的客户端
  236. 第十六章 Java服务器端:Socket
  237. 16.0. 简介
  238. 16.1. 创建ServerSocket
  239. 16.2. 返回响应(字符串或二进制)
  240. 16.3. 返回对象信息
  241. 16.4. 处理多客户端
  242. 16.5. 网络日志
  243. 16.6. 例程: 一个Java聊天室服务器
  244. 第十七章 网络客户端(II):Applet和Web客户端
  245. 17.0. 简介
  246. 17.1. 在网页中嵌入Applet
  247. 17.2. 编写Applet
  248. 17.3. 连接Applet主机的服务器
  249. 17.4. 通过Applet显示文档
  250. 17.5. 通过Applet运行CGI脚本
  251. 17.6. 读取URL上的内容
  252. 17.7. 从URL中解析HTML文本
  253. 17.8. 从文件中解析URL名字
  254. 17.9. 将文件名转换为URL名字
  255. 17.10. 例程: MkIndex
  256. 17.11. 例程: LinkChecker
  257. 第十八章 Web服务器中的Java:Servlet与JSP
  258. 18.0. 简介
  259. 18.1. 第一个Servlet:生成HTML页面
  260. 18.2. Servlet:处理表单参数
  261. 18.3. cookie
  262. 18.4. 会话跟踪
  263. 18.5. 从Servlet中生成PDF
  264. 18.6. 当HTML遇上Java:JSP
  265. 18.7. JSP的嵌入和控制转移
  266. 18.8. 使用Servlet的JSP
  267. 18.9. 用JavaBean组件减少JSP中的Java代码量
  268. 18.10. JSP语法总结
  269. 18.11. 程序:Cookiecutter
  270. 18.12. 程序:JabaDot Web新闻门户
  271. 第十九章 Java与Email
  272. 19.0. 简介
  273. 19.1. 发送Email: 浏览器版
  274. 19.2. 发送Email: 真正的客户程序
  275. 19.3. Mail-Enabling a Server Program
  276. 19.4. 发送MIME邮件
  277. 19.5. 提供邮件设置
  278. 19.6. 不使用JavaMail发送邮件
  279. 19.7. 读邮件
  280. 19.8. 程序: MailReaderBean
  281. 19.9. 程序: MailClient
  282. 第二十章 数据库访问
  283. 20.0. 简介
  284. 20.1. 文本文件数据库
  285. 20.2. DBM数据库
  286. 20.3. JDBC的安装和连接
  287. 20.4. 与JDBC数据库连接
  288. 20.5. 发送一个JDBC查询并获得结果
  289. 20.6. 没有JDBC参数化语句
  290. 20.7. 在JDBC中使用存储过程
  291. 20.8. 用ResultSet改变数据
  292. 20.9. 用SQL改变数据
  293. 20.10. 寻找JDBC元数据
  294. 20.11. 程序:JDAdmin
  295. 第二十一章 XML
  296. 21.0. 简介
  297. 21.1. 用XSLT转换XML
  298. 21.2. 用SAX解析XML
  299. 21.3. 用DOM解析XML
  300. 21.4. 用DTD验证结构
  301. 21.5. 用DOM生成我们自己的XML
  302. 21.6. 程序:xml2mif
  303. 第二十二章 分布式Java:RMI
  304. 22.0. 简介
  305. 22.1. 定义RMI合同
  306. 22.2. RMI客户
  307. 22.3. RMI 服务器
  308. 22.4. 跨网络部署RMI
  309. 22.5. 程序:RMI回调
  310. 22.6. 程序:RMIWatch
  311. 第二十三章 包与包装机制
  312. 23.0. 简介
  313. 23.1. 创建包
  314. 23.2. 用Javadoc为类写文档
  315. 23.3. 用jar存档
  316. 23.4. 从JAR运行Applet
  317. 23.5. 用JDK运行Applet
  318. 23.6. 从JAR运行程序
  319. 23.7. 将类作为JavaBean
  320. 23.8. 将JavaBean放入JAR中
  321. 23.9. 将Servlet压缩为一个WAR文件
  322. 23.10.“编写一次,随处安装”
  323. 23.11. JWS
  324. 23.12. 签署JAR文件
  325. 第二十四章 Java线程
  326. 24.0. 简介
  327. 24.1. 在另一线程中运行代码
  328. 24.2. 显示一个带动画的图像
  329. 24.3. 停止线程
  330. 24.4. 超时
  331. 24.5. 线程通信:同步化代码
  332. 24.6. 线程的通信:wait()和notifyAll()
  333. 24.7. 在编辑器中后台保存
  334. 24.8. 多线程的网络服务器
  335. 第二十五章 内省或“命名类的类”
  336. 25.0. 简介
  337. 25.1. 获得类描述符
  338. 25.2. 寻找和使用方法和字段
  339. 25.3. 动态地装载和实例化一个类
  340. 25.4. 从头开始构造一个类
  341. 25.5. 性能计时
  342. 25.6. 输出类信息
  343. 25.7. 例程:CrossRef
  344. 25.8. 程序:AppletViewer
  345. 第二十六章 Java与其他语言的结合
  346. 26.0. 简介
  347. 26.1. 运行一个程序
  348. 26.2. 运行程序并获取它的结果
  349. 26.3. 用BSF混合使用Java和脚本语言
  350. 26.4. 与本机代码(C/C++)混合
  351. 26.5. 从本机代码调用Java
  352. 26.6. 程序:DBM
  353. 后记
书名:Java经典实例
作者:Ian F. Darwin
译者:张晓坤, 刘基诚 译
国内出版社:中国电力出版社
出版时间:2002年08月
页数:840
书号:7-5083-0945-6
原版书出版商: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 gallus)是印度一种野生红色丛林鸟类的后裔。大概8000年前在今越南和泰国被驯化。人类饲养鸡的目的是食用它的肉和蛋,雄鸡也用于体育运动(虽然在世界的许多地方斗鸡已经被法律禁止)。
鸡的身体大而臃肿,翅短,最多只能飞行很短的距离,非常适于生活在地面上。它们带有四趾的爪子专为挖土而生,在土里它们可以找到爱吃的各种食物:小虫子、种子和各种植物性的东西。
公鸡在英语中又称rooster或cock,母鸡称为hen。鸡蛋的孵化期大约三周,新孵出的小鸡非常早熟,长有柔软的绒毛,破壳而出之后自己就可以满地欢蹦乱跳。它们连觅食也不用依赖妈妈。不仅如此,依靠留在胃里的蛋黄,它们可以在出生后不吃不喝存活一周。
鸡经常出现在古代文献资料中。中国的文献表明,鸡早在公元前1400年就引入中国了。公元前600年巴比伦的雕刻中有它们。公元前400年古希腊作家阿里斯托芬的作品中也有提及。雄鸡长期以来是勇气的象征:罗马人认为鸡是战神Mars的祭品,法兰西第一共和国也把雄鸡选作国徽。