Java经典实例
2009-2
中国电力出版社
Ian F.Darwin
784
无
JDK 1.5(代号为“猛虎”)是Java阵营的一个重大创举。它引入多个主要的新特征,例如:简化数据结构的泛型,以灵活而又定义明确的方式注释Java类的元数据,用于读取数据的基于模式的新机制,以及用于格式化打印的新机制等。此外,新版本中还包括了许多细微却很重要的改动,这些改动对Java开发者而言是必须的。虽然你很想马上弄懂这些机制,但是要完全理解和融会贯通这些机制还是需要花费一些时间的。我在第一版的编后记中写道:“写这本书是一段不堪回首的经历。”当许多评论家和作家在大肆炫耀自己的荣誉时,我却在为自己在第一版中的错误和疏漏而感到尴尬不堪。因此,在这一版本中,我尽力做了修正。与此同时,我增加了一些新实例,并摒弃了小部分旧实例。最大的新增部分就是第8章,主要讨论泛型和枚举,以及能为诸如Java Collection这样的容器提供更多灵活性的特征。当前,JaVa已经包含了正则表达式的API,因此,第4章就由Apache的正则表达式API过渡到JDK 1.4正则表达式。
本书收集了Java开发人员经常遇到的成百个问题的解决方案,涵盖了Java应用的方方面面,堪称讲述Java应用的百科全书。书中的实例从正确设置CLASSPATH和读取环境信息这样的简单任务,到应用XML,或者使用JDK 1.5所带的并发性工具实现多线程编程的完整程序,几乎无所不包。 无论你是否直接使用书中的实例,作为灵感的源泉,作为学习Java的工具,或者用于其他用途,本书都将成为你图书收藏中的珍品。还没有一本书能够如此全面地讲述Java的诸多功能,并能够如此容易地运用到实践当中去。作为第二版,本书更像是一部秘笈,指引你获取最新的第三方资源,以及提供实用的“招式”。本书展现了JDK 1.5中许多新的编程语言与API特性,这些都包括在那些实例中。
Ian F.Darwin有三十年的计算机软件开发经验,是Learning Tree国际教育公司的讲师和课程设计师。
前言第1章 起步走:编译、运行和调试Java程序 1.0 简介 1.1 编译和运行Java程序:JDK方式 1.2 采用带彩色突出显示的编辑器编辑和编译程序 1.3 采用IDE编译、执行和测试程序 1.4 有效使用CLASSPATH 1.5 使用本书的com.darwinsys API类 1.6 编译本书的源代码示例 1.7 使用Ant工具自动编译和执行Java程序 1.8 Applet 1.9 处理过期警告 1.10 没有#ifdef的条件编译 1.11 调试信息的输出 1.12 使用断言机制维护程序 1.13 使用调试器JDB 1.14 单元测试 1.15 获取可读的回溯 1.16 更多的Java源程序 1.17 例程:Debug第2章 Java的运行环境 2.0 简介 2.1 获得环境变量 2.2 系统属性 2.3 编写JDK版本相关的代码 2.4 编写操作系统相关的代码 2.5 使用扩展包或其他API包 2.6 解析命令行参数第3章 字符串 3.0 简介 3.1 利用substring()分解字符串 3.2 利用StringTokenizer分解字符串 3.3 连接字符串 3.4 处理单个字符 3.5 字符串的对齐 3.6 Unicode字符与String.的转换 3.7 颠倒字符串 3.8 扩展和压缩TAB符 3.9 控制字母大小写 3.10 缩排文档 3.11 输入非打印字符 3.12 删除字符串尾部的空格 3.13 解析逗号分隔的数据 3.14 例程:一个简单的文本格式化工具 3.15 例程:Soundex算法第4章 正则表达式的模式匹配 4.0 简介 4.1 正则表达式的语法 4.2 在Java中使用正则表达式:测试模式 4.3 查找匹配的文本 4.4 替换匹配的正文 4.5 打印匹配的所有字符串 4.6 打印含有模式的行 4.7 在正则表达式中控制大小写 4.8 匹配重音符或复合字符 4.9 匹配时的换行问题 4.10 例程:Apache日志文件解析 4.11 例程:数据挖掘 4.12 例程:完整的Grep第5章 数字 5.0 简介 5.1 检查字符串是否包含有效数字 5.2 数据类型的由大变小 5.3 数字与对象的互相转换 5.4 使用分数 5.5 确保浮点数的准确性 5.6 浮点数的比较 5.7 浮点数的舍入 5.8 数字的格式化 5.9 二进制、八进制、十进制以及十六进制之间的转换 5.10 整数序列 5.11 罗马数字 5.12 名词的复数形式 5.13 产生随机数 5.14 产生更好的随机数 5.15 三角函数的计算 5.16 取对数 5.17 矩阵乘法 5.18 复数 5.19 处理特大的数字 5.20 例程:TempConVerter 5.21 例程:数字回文(Number Palindromes)第6章 日期和时间 6.0 简介 6.1 查看当前日期 6.2 按照指定格式打印日期/时间 6.3 用其他历法表示日期 6.4 将YMDHMS转换为Calendar对象 6.5 将字符串转换为日期 6.6 将秒数转换为DMYHMS格式 6.7 日期的加减运算 6.8 计算日期之间的间隔 6.9 比较日期 6.10 第几日 6.11 日历页 6.12 测量流逝的时间 6.13 休眠 6.14 例程:提醒服务第7章 结构化数据 7.0 简介 7.1 数组 7.2 调整数组的长度 7.3 ArrayList类 7.4 Iterator(迭代器) 7.5 链表 7.6 使用:Hashtable和HashMap进行映射 7.7 Properties类和Preferences类 7.8 排序 7.9 避免频繁地排序 7.10 排除重复元素 7.11 搜索对象 7.12 将集合转换为数组 7.13 自定义Iterator 7.14 堆栈 7.15 多维结构 7.16 集合小结 7.17 例程:运行效率第8章 泛型、foreach循环和枚举的数据结构(JDK 1.5) 8.0 简介 8.1 使用泛型 8.2 使用“foreach”循环 8.3 使用泛型避免强制类型转换 8.4 使用自动装包和自动拆包进行转换 8.5 使用类型安全的枚举 8.6 例程:MediaInvoicer第9章 面向对象的技术 9.0 简介 9.1 打印对象用toString()方法格式化 9.2 覆盖equals方法 9.3 覆盖hashcode方法 9.4 Clone方法 9.5 Finalize方法 9.6 使用内部类 9.7 通过接口进行回调(Callback) 9.8 多态(Polymorphism)/抽象方法 9.9 传值 9.10 Singleton模式 9.11 自定义异常 9.12 例程:Plotter(绘图仪)第10章 输入和输出 10.0 简介 10.1 从标准输入设备读取数据 10.2 向标准输出设备写数据 10.3 JDK 1.5的Formatter类 10.4 扫描文件 10.5 JDK 1.5的Scanner类 10.6 按文件名打开文件 10.7 复制文件 10.8 把文件读入字符串 10.9 重定向标准流 10.10 复制流 10.11 读/写不同字符集的文本 10.12 行结束符 10.13 平台相关的文件编码 10.14 断行再续 10.15 读写二进制数据 10.16 定位(Seeking) 10.17 处理C程序写的数据流 10.18 存储和还原串行化对象 10.19 防止ClassCastExceptions异常 10.20 读写JAR或Zip文档 10.21 读写压缩文件 10.22 例程:将文本输出为PostScript格式第11章 目录和文件操作 11.0 简介 11.1 获取文件信息 11.2 创建文件 11.3 修改文件名 11.4 删除文件 11.5 创建临时文件 11.6 更改文件属性 11.7 列出目录内容 11.8 获取根目录 11.9 创建新目录 11.10 例程:Find第12章 串行和并行接口编程 12.0 简介 12.1 选择一个端口 12.2 打开串行端口 12.3 打开并行端口 12.4 解决端口冲突 12.5 基于端口读写数据:异步(Lock Step) 12.6 基于端口的读写数据:事件驱动 12.7 基于端口的读写数据:线程 12.8 例程:Penman绘图仪第13章 图形与声音 13.0 简介 13.1 绘制图形 13.2 测试图形组件 13.3 输出文本 13.4 使组件上的文本居中 13.5 阴影效果 13.6 绘制二维艺术字 13.7 文本字体 13.8 图像 13.9 播放声音文件 13.10 播放视频文件 13.11 Java的打印 13.12 例程:P10tterlAWT 13.13 例程:Grapher第14章 图形用户界面(GUI) 14.0 简介 14.1 GUI组件 14.2 窗体布局 14.3 带Tab的布局 14.4 事件处理:让按钮工作起来 14.5 使用匿名的内部类进行事件处理 14.6 通过“关闭窗体”结束程序 14.7 对话框 14.8 GuI异常 14.9 在窗体上打印数据 14.10 使用JSpinner’选择值 14.11 使用JFileChooser选择文件 14.12 选择颜色 14.13 使用HTML格式化JComponents 14.14 将主窗体居中 14.15 修改swing程序的外观感受(Look and Feel). 14.16 改进Mac OS x的GUI 14.17 例程:定制字体 14.18 例程:定制布局管理器第15章 国际化与本地化 15.0 简介 15.1 用118N资源创建按钮 15.2 列出有效区域 15.3 使用118N资源创建菜单 15.4 编写国际化的实用子程序 15.5 使用118N资源包创建对话框 15.6 创建资源包 15.7 从代码中提取字符串 15.8 使用指定的区域 15.9 设置默认的区域 15.10 格式化消息 15.11 例程:MenuIntl 15.12 例程:BusCard第16章 网络客户端 16.0 简介 16.1 访问服务器 16.2 查找并报告网络地址 16.3 处理网络错误 16.4 读写文本数据 16.5 读写二进制数据 16.6 读写串行化数据 ……第17章 Java服务器端:Socket 第18章 网络客户端(Ⅱ):Applet和Web客户端 第19章 JaVa与EmajI 第20章 数据库访问 第21章 XML 第22章 分布式Java:RMI 第23章 包和包装机制 第24章 JaVa线程 第25章 内省或“命名类的类”第26章 JaVa与其他语言的结合 后记
插图:第1章 起步走:编译、运行和调试Java程序1.2 采用带彩色突出显示的编辑器编辑和编译程序讨论比集成环境(IDE)要小,但比命令行工具要大,介于它们之间的工具是什么呢?答案是支持Java的文本编辑器。例如:TextPad(http://www.textpad.corn)、Visual Slick Edit以及其他低成本的窗口化编辑器(主要是基于windows的),它们内置了Java的特性,可以直接在编辑器中编译程序。TextPad可以识别许多文件类型,包括批处理文件和shell脚本、C、c++、Java、JSP、JavaScript等。对于每一种类型,其关键字、注释、字符串等都采用不同的颜色来标识,这样方便你在代码中发现错误。例如:注释标号不成对,只有一个“/*,缺少另一个*/*。当然,它不像集成环境那样,能比较深入地“理解”Java,它实际上主要还是依赖程序员的开发经验。TextPad包含编译和执行JaVa程序的命令,因此,你可以直接在窗口上输出结果,比在命令行上执行要方便多了。然而,除非程序终止,否则你无法看到命令的结果,也就不能把握GUI应用程序在创建窗体时所抛出的异常。尽管如此,TextPad不失为一个十分有用的工具。此外,其他的编辑器还包括:彩色的vim(unix编辑工具vi的增强版,适用于windows或Unix系统,参见http://www.vim.org);曾经流行的Emacs编辑器等。
写作本书对我真是一段诚惶诚恐的经历。所花去的时间比我预计的和愿意承受的都要长得多。当然,一切还没有结束。尽管我、技术审核、编辑还有许多其他的有才能的人已尽全力,这么厚的一本书肯定还会有错误、疏漏以及讲述不清的地方。如果你碰到这些事情,请通过e-mail告知我们,本书的后续版本将会包含像你这样的读者所贡献的努力!有人说过,只有在你教过别人之后,你才能真正了解某事物。我发现对于教学来说这是至理名言,对于写作亦然。我常告诉学生,当Java还很年轻时,一个人只要刻苦学习就可能几乎了解Java的一切。但到了JDK 1.1横空出世的时候,这再也不可能了。到现在,任何人要说他们对Java全知全觉肯定会让测谎仪的铃声响彻云霄。而Java的容量还在不断增长。我们怎么样才能与之俱进呢?靠Java书?Java杂志?Java课程?会议?答案不一而足,但都应该有用。Sun的Java软件部门有一些活动应该给予关注:
《Java经典实例(第2版)》对于Java开发人员而言是理想的“第二《Java经典实例(第2版)》”(也是理想的自学书籍),讲述API比一般书籍要详细,非常适合扩大Java应用的知识面。《Java经典实例(第2版)》的主题包括:编译和调试Java程序 泛型、foreach和枚举(1.5版)使用Ant开发网络客户端和服务器端将应用程序打包,以便部署Web编程、Set’Vlet和IJSP字符串和正则表达式 数据库访问格式化器和扫描器(1.5版)集成XML.JavajF[IMac OS x 远程方法调用(RMI)数组和其他数据集合内省并行和串行端口的编程开发图形化用户界面文件、目录和文件系统并发性(1.5版)
无
Java 经典实例中的示例经典,
应用方面的东西蛮多的,不是很冗杂的叙述,直接拿代码说话,初学Java虽然有时候看的不太明白,不过总的来说还是很有用的书。
这本书我大概的翻了一下 涉及的面比较广 比较适合有一定Java基础的朋友看 书的质量也蛮好的
这本书作为习题集来联系和熟悉java
很不错的一本java书
这书里面的例子多,都很有参考价值。搞懂了以后,java水平定会有一个层次的提高.
不错的一本书,书上很多实例。写的非常好
这本书还没见大体浏览了一下其中的例子应该还是比较适合开发研究的
任何一本书都有学习的地方。就看自己怎么对待了。学习中
很好的,比较喜欢,不然我就不买了,一直都是在当当网上买书籍~
书中代码还比较多
到手之后,粗略的翻看了一下,这本书之前有同学用过,反响不错,我看了一下, 例子的容量和解析都不错,很好的一本辅助学习和工具书
只是简单的例子,覆盖面不是太广,不过,也算本很好的书了
这个出版公司的书挺好的。
书是好书,很实用
书的发货速度挺快的,还没细看,不过大致感觉挺实用的
书还行,就是没保护好。虽然刚下雪,也不至于书上都是污渍,难道是露天存放的,这方面比较失望。微特派不给力啊,望注意。
里面的内容不错,挺好的,例子也挺实用的
包装没问题,内容也很丰富,不错
还没看内容呢,啊,字数不到10字没有积分。够了。。。
是一本可以作为工具书的好书!
帮朋友买的,送货快,挺不错的
刚拿到手粗略的浏览了一遍就知道是好书了,
好大一本,内容丰实
一笨jdk API类书籍,很适合想要学好java却对英文不是很敏感的人阅读
在实例中让你知道独特高效的用法。
有些实例平时工作中很有用。有参考价值~
书很不错,很适合初学者!
自学必看
刚刚收到书,随便番了一下,感觉还不错,例子挺多的,书的质量也还好。接下来就要慢慢地细心研读了,希望能有所收获。另外还要赞一下当当的送货速度,越来越快了,基本都是2-3天内到,比以前有所提高,希望继续发扬。
翻了翻。例子写的很不错哦
不过有些例子前后引用过多,如果不细致看的话,还以为实例有错。比如有些是书中的自定义方法,但未明确标注。在JDK找了半天都没有找到。
看一下,整体感觉还好,但好像有点过时,现在大都人在用JDK1.6或1.7,书中的是1.5。最早版是2009年的。
书的质量倒是没有什么问题,但是运费要按照书费的百分之40收取,实在让我费解。
这本书买亏了,看的莫名奇妙,核心技术比这个好太多了。
书本身没问题,只适合入门,看了几页就送人了,买错了
送货整整一周,很慢,书还是不错的
印刷不好 其它的OK
初学者做个练习集还不错
内容值得借鉴,
书名是经典实例,但内容都是理论的东西,不适合初学者,水平到一定程度才会说好吧
一句话,不实用
感觉书里面说的内容有些很偏
书挺不错的,需要有些java基础的朋友比较容易看...
实用性比较强,还是比较好的。
这本书内部影印有严重的问题,卓越的发书的时候都不为顾客考虑,我们在花正版的价钱买回来的确实一本在路边摊就可以买到的盗版货,着实让人纠结
还不错,至少比较经典,就是价位再低一些就更好了。
虽然只看了前面几章,但是所讲到的例子也算比较经典了,而且解释很详细,我很喜欢
内容一般,没有想象中那么好,书的质量和配送服务还不错!
好书,结合《Headfirst java》能使你很快掌握Java
很好的一本书,非常有用的内容,正如序言中所讲,适合作为“第二本书”,可以说是经典之作,越看越喜欢了
终于等到第二版了
例子很多,慢慢学
还好,很是不错的。
经典JAVA书籍
内容丰富且实用!不错的一本书!