本书是世界级编程大师Herbert Schildt的又一作品。英文原版一经推出就受到了热烈的欢迎,全书销量超过300万册。本书从介绍Java的基础知识开始,全面系统地讲述了Java语言的基础、Java类库及开发环境。全书共分32章,通过大量从简单到复杂的范例程序向读者展示了Java语言的精髓。书中对Java类库及其应用进行了完整细致的讲述,还介绍了几个Java开发及综合应用的大型范例。同时涵盖了Java应用程序和小程序开发、编译、调试和运行等方面所需的全部内容,并包括了最新的Java 2,版本1.4中所含的新特性,如断言、NIO、规则表达式等。\r\n 本书可作为各种层次的Java程序员的理想学习工具和参考书。
第一部分 Java语言\r\n\r\n第1章 Java的起源\r\n\r\n1.1 Java与其他语言的关系\r\n1.2 Java的创立\r\n1.3 为什么Java对Internet是非常重要的\r\n1.4 Java的魔力:字节码\r\n1.5 Java 的专门用语\r\n1.6 继续发展\r\n\r\n第2章 Java语言概述\r\n\r\n2.1 面向对象的编程\r\n2.2 第一个范例程序\r\n2.3 第二个范例程序\r\n2.4 两条控制语句\r\n2.5 使用程序块\r\n2.6 基本词汇\r\n2.7 Java类库\r\n\r\n第3章 数据类型、变量和数组\r\n\r\n3.1 Java是一种强类型语言\r\n3.2 简单类型\r\n3.3 整型\r\n3.4 浮点类型\r\n3.5 字符\r\n3.6 布尔类型\r\n3.7 文字详探\r\n3.8 变量\r\n3.9 类型转换和强制转换\r\n3.10 表达式中的自动类型提升\r\n3.11 数组\r\n3.12 关于字符串的几点解释\r\n3.13 C/C++程序员请注意指针的用法\r\n\r\n第4章 运算符\r\n\r\n4.1 算术运算符\r\n4.2 位运算符\r\n4.3 关系运算符\r\n4.4 布尔逻辑运算符\r\n4.5 赋值运算符\r\n4.6 ? 运算符\r\n4.7 运算符优先级\r\n4.8 使用圆括号\r\n\r\n第5章 程序控制语句\r\n\r\n5.1 Java的选择语句\r\n5.2 循环语句\r\n5.3 跳转语句\r\n\r\n第6章 介绍类\r\n\r\n6.1 类的基础\r\n6.2 声明对象\r\n6.3 给对象引用变量赋值\r\n6.4 介绍方法\r\n6.5 构造函数\r\n6.6 this关键字\r\n6.7 无用单元收集\r\n6.8 finalize( )方法\r\n6.9 堆栈类\r\n\r\n第7章 方法和类详述\r\n\r\n7.1 重载方法\r\n7.2 把对象作为参数使用\r\n7.3 详述参数传递\r\n7.4 返回对象\r\n7.5 递归\r\n7.6 介绍访问控制\r\n7.7 理解static\r\n7.8 介绍final\r\n7.9 再论数组\r\n7.10 介绍嵌套类和内部类\r\n7.11 String类\r\n7.12 使用命令行参数\r\n\r\n第8章 继承\r\n\r\n8.1 继承的基础知识\r\n8.2 使用super\r\n8.3 创建多级层次结构\r\n8.4 何时调用构造函数\r\n8.5 方法覆盖\r\n8.6 动态方法分配\r\n8.7 使用抽象类\r\n8.8 使用final与继承\r\n8.9 Object类\r\n\r\n第9章 包和接口\r\n\r\n9.1 包\r\n9.2 访问保护\r\n9.3 导入包\r\n9.4 接口\r\n\r\n第10章 异常处理\r\n\r\n10.1 异常处理基础\r\n10.2 异常类型\r\n10.3 未捕获的异常\r\n10.4 使用try和catch\r\n10.5 多条catch语句\r\n10.6 嵌套的try语句\r\n10.7 throw\r\n10.8 throws\r\n10.9 finally\r\n10.10 Java内嵌的异常\r\n10.11 创建自己的异常子类\r\n10.12 成链的异常\r\n10.13 使用异常\r\n\r\n第11章 多线程编程\r\n\r\n11.1 Java的线程模型\r\n11.2 主线程\r\n11.3 创建一个线程\r\n11.4 创建多线程\r\n11.5 使用isAlive( )和join( )\r\n11.6 线程的优先级\r\n11.7 同步\r\n11.8 线程内通信\r\n11.9 暂停、恢复和停止线程\r\n11.10 使用多线程\r\n\r\n第12章 输入/输出、小程序和其他主题\r\n\r\n12.1 输入/输出基础\r\n12.2 读取控制台输入\r\n12.3 控制台输出\r\n12.4 PrintWriter类\r\n12.5 读写文件\r\n12.6 小程序基础\r\n12.7 transient和volatile修饰符\r\n12.8 使用instanceof\r\n12.9 strictfp\r\n12.10 本地方法\r\n12.11 使用assert\r\n\r\n第二部分 Java库\r\n\r\n第13章 字符串处理\r\n\r\n13.1 String构造函数\r\n13.2 字符串的长度\r\n13.3 特殊的字符串操作\r\n13.4 字符提取\r\n13.5 字符串比较\r\n13.6 查找字符串\r\n13.7 修改字符串\r\n13.8 使用valueOf( )的数据转换 \r\n13.9 改变字符串中字符的大小写\r\n13.10 Java 2, 版本1.4中新增的字符串方法\r\n13.11 StringBuffer\r\n\r\n第14章 详探java.lang\r\n\r\n14.1 简单类型包装器\r\n14.2 Void\r\n14.3 Process\r\n14.4 Runtime\r\n14.5 System\r\n14.6 Object\r\n14.7 使用clone( )和Cloneable接口\r\n14.8 Class\r\n14.9 ClassLoader\r\n14.10 Math\r\n14.11 StrictMath\r\n14.12 Compiler\r\n14.13 Thread, ThreadGroup和Runnable\r\n14.14 ThreadLocal和InheritableThreadLocal\r\n14.15 Package\r\n14.16 RuntimePermission\r\n14.17 Throwable\r\n14.18 SecurityManager\r\n14.19 StackTraceElement\r\n14.20 CharSequence接口\r\n14.21 Comparable接口\r\n14.22 java.lang.ref 和 java.lang.reflect包\r\n\r\n第15章 java.util 第1部分: 集合框架\r\n\r\n15.1 集合概述\r\n15.2 集合接口\r\n15.3 集合类\r\n15.4 使用迭代器访问集合\r\n15.5 在集合中存储用户定义的类\r\n15.6 RandomAccess 接口\r\n15.7 使用映射\r\n15.8 比较器\r\n15.9 集合算法\r\n15.10 数组\r\n15.11 遗留的类和接口\r\n15.12 集合小结\r\n\r\n第16章 java.util 第2部分: 更多的工具类\r\n\r\n16.1 StringTokenizer(字符串符号赋予器类)\r\n16.2 BitSet\r\n16.3 Date\r\n16.4 Calendar\r\n16.5 GregorianCalendar\r\n16.6 TimeZone\r\n16.7 SimpleTimeZone\r\n16.8 Locale\r\n16.9 Random\r\n16.10 Observable\r\n16.11 Timer和TimerTask\r\n16.12 Currency\r\n16.13 java.util.zip包\r\n16.14 java.util.jar包\r\n\r\n第17章 输入/输出: 深入探讨java.io\r\n\r\n17.1 Java的I/O类和接口\r\n17.2 File\r\n17.3 流类\r\n17.4 字节流\r\n17.5 字符流\r\n17.6 使用流I/O\r\n17.7 序列化\r\n17.8 流的益处\r\n\r\n第18章 网络\r\n\r\n18.1 网络基础\r\n18.2 Java和网络\r\n18.3 InetAddress类\r\n18.4 TCP/IP客户套接字\r\n18.5 URL\r\n18.6 URLConnection类\r\n18.7 TCP/IP服务器套接字\r\n18.8 缓存的代理HTTP服务器\r\n18.9 数据报\r\n18.10 Inet4Address和Inet6Address\r\n18.11 URI类\r\n\r\n第19章 Applet 类\r\n\r\n19.1 Applet基础\r\n19.2 小程序的结构\r\n19.3 小程序的框架\r\n19.4 简单的小程序显示方法\r\n19.5 请求重画\r\n19.6 使用状态窗口\r\n19.7 HTML APPLET 标记\r\n19.8 把参数传递给小程序\r\n19.9 getDocumentBase( )和getCodeBase( )\r\n19.10 AppletContext和showDocument( )\r\n19.11 AudioClip接口\r\n19.12 AppletStub接口\r\n19.13 到控制台的输出\r\n\r\n第20章 事件处理\r\n\r\n20.1 两种事件处理机制\r\n20.2 委托事件模型\r\n20.3 事件类\r\n20.4 事件源\r\n20.5 事件监听器接口\r\n20.6 使用委托事件模型\r\n20.7 适配器类\r\n20.8 内部类\r\n\r\n第21章 介绍 AWT:窗口、图形和文本的使用\r\n\r\n21.1 AWT 类\r\n21.2 窗口基本元素\r\n21.3 使用框架窗口\r\n21.4 在小程序中创造框架窗口\r\n21.5 创建窗口化程序\r\n21.6 在窗口中显示信息\r\n21.7 处理图形\r\n21.8 处理颜色\r\n21.9 设定画图模式\r\n21.10 处理字体\r\n21.11 使用 FontMetrics管理文本输出\r\n21.12 探索文本和图形\r\n\r\n第22章 使用AWT控件、布局管理器和菜单\r\n\r\n22.1 控件基础知识\r\n22.2 标签\r\n22.3 使用按钮\r\n22.4 使用复选框\r\n22.5 复选框组\r\n22.6 使用列表\r\n22.7 管理滚动条\r\n22.8 使用单行编辑域\r\n22.9 使用多行编辑域\r\n22.10 了解布局管理器\r\n22.11 菜单栏和菜单\r\n22.12 对话框\r\n22.13 FileDialog\r\n22.14 通过扩展AWT组件处理事件\r\n22.15 对控件、菜单和布局管理器的研究\r\n\r\n第23章 图像\r\n\r\n23.1 文件格式\r\n23.2 图像基础:创建、装载和显示\r\n23.3 ImageObserver\r\n23.4 双缓冲技术\r\n23.5 MediaTracker\r\n23.6 ImageProducer\r\n23.7 ImageConsumer\r\n23.8 ImageFilter\r\n23.9 单元格动画\r\n23.10 附加的成像类\r\n\r\n第24章 新的I/O、规则表达式和其他包\r\n\r\n24.1 内核Java API包\r\n24.2 新的I/O包\r\n24.3 规则表达式的处理过程\r\n24.4 映射\r\n24.5 远程方法调用\r\n24.6 文本格式化\r\n\r\n第三部分 使用Java开发软件\r\n\r\n第25章 Java Bean\r\n\r\n25.1 什么是Java Bean\r\n25.2 Java Bean的优点\r\n25.3 应用程序构建器工具\r\n25.4 使用BDK\r\n25.5 JAR文件\r\n25.6 反省\r\n25.7 使用BDK开发一个简单的Bean\r\n25.8 使用绑定属性\r\n25.9 使用BeanInfo接口\r\n25.10 约束属性\r\n25.11 持久性\r\n25.12 自定义器功能\r\n25.13 Java Bean API\r\n25.14 使用Bean构建器\r\n\r\n第26章 导读Swing\r\n\r\n26.1 JApplet\r\n26.2 图标和标签\r\n26.3 文本域\r\n26.4 按钮\r\n26.5 组合框\r\n26.6 选项卡窗格\r\n26.7 滚动窗格\r\n26.8 树\r\n26.9 表格\r\n26.10 探索Swing\r\n\r\n第27章 Servlet\r\n\r\n27.1 背景知识\r\n27.2 Servlet的生命周期\r\n27.3 使用Tomcat开发Servlet\r\n27.4 简单的Servlet\r\n27.5 Servlet API\r\n27.6 javax.servlet包\r\n27.7 读Servlet参数\r\n27.8 javax.Servlet.http包\r\n27.9 处理HTTP请求和响应\r\n27.10 使用Cookie\r\n27.11 会话追踪\r\n27.12 安全问题\r\n\r\n第28章 从C++迁移到Java\r\n\r\n28.1 C++和Java之间的不同\r\n28.2 取消指针\r\n28.3 C++引用参数与Java引用参数的对比\r\n28.4 转换C++抽象类为Java接口\r\n28.5 转换默认参数\r\n28.6 转换C++多重继承的层次结构\r\n28.7 析构函数和finalize( )\r\n\r\n第四部分 Java的应用\r\n\r\n第29章 DynamicBillboard小程序\r\n\r\n29.1 APPLET标记\r\n29.2 源代码概述\r\n29.3 动态代码\r\n\r\n第30章 ImageMenu:一个基于图像的Web菜单\r\n\r\n30.1 源图像\r\n30.2 小程序标记\r\n30.3 方法\r\n30.4 小结\r\n\r\n第31章 Lavatron小程序:运动竞技场的显示牌\r\n\r\n31.1 Lavatron的工作原理\r\n31.2 源代码\r\n31.3 小结\r\n\r\n第32章 Scrabblet:多人拼字游戏\r\n\r\n32.1 网络安全问题\r\n32.2 游戏\r\n32.3 源代码\r\n32.4 服务器代码\r\n32.5 改进拼字游戏\r\n\r\n附录A 使用Java的文档注释
过去几年证明了下列事实:Web永久地改变了计算方面的情况,不愿意接受这一事实的程序员将会落伍。
上面的说法非常正确。越来越多的应用程序必须具有到Web的接口。应用程序是什么这一问题不再重要,能够访问整个Web的想法正在驱使程序员们编写在线程序,而Java是一种许多人用来完成这项工作的语言。坦率地讲,精通Java不再是专业程序员的一种选择,它是一种要求。本书就是要帮助你掌握它。
除了是一种在Internet上使用的主要语言外,Java是如此之重要,还有另一个原因:它改变了计算机语言开发的进程。许多因为Java而变得重要的特征现在也在其他语言中找到了它们的用武之地。例如,新的语言C#就受到了Java的强烈影响。懂得Java就打开了通往编程中最新变革的大门。简言之,Java是世界上最重要的计算机语言之一。
一本面向所有程序员的书
使用本书不需要任何编程经验。然而,如果你有C/C++背景,那么就会学得更快。因为大多数读者都知道,Java类似于C/C++。因此,知道那些语言会有帮助,但并不是必须的。即使你以前从未编过程,使用本书,也可以学会用Java编程。
本书内容
本书讨论Java编程语言的所有方面。第一部分深入探讨Java语言。从基础开始讲起,包括数据类型、控制语句和类。还讨论了Java的异常处理机制、多线程子系统、包和接口。
第二部分讨论标准Java库。正如你将要学习的,Java的强大之处就在于它的库。讨论的题目包括字符串、I/O、连网和标准实用工具、集合框架、小程序、基于GUI的控件和图像。
第三部分探讨与Java开发环境有关的几个问题,包括Java Beans概述、Servlet和Swing。
第四部分讨论几个强大的Java小程序,作为如何使用Java的几个扩展范例。最后一个小程序,称为Scrabblet,是一个完整的多用户网络游戏。它显示了如何处理与基于Web的编程有关的几个最重要的问题。
与前几版比较本书新增的内容
本书的英文版一经出版就受到了热烈的欢迎,应读者要求不断更新后再版,本书就是根据其英文版的第五版翻译的,这一版与前一版相比增加了由Java 2,版本1.4中新增的特征,其中最重要的是assert关键字、基于通道的I/O子系统,成链的异常和连网增强功能。本书进行了全面的更新以反应那些新增内容。
Web上的代码
记住,本书中所有范例和项目的源代码都可以在Web上免费得到,其网址为www.osborne.com。
致谢
在此要特别感谢Patrick Naughton。Patrick是Java语言的创建者之一。他也帮助撰写了本书的第一版。例如,书中第17, 18, 23, 29, 30, 31和32章中的大部分材料最初都是Patrick提供的。他的洞察力、经验和能力对本书的成功贡献很大。
还要感谢Joe ONeil,他提供了本书第24, 25, 26和27章的初始文稿。Joe也对我撰写的另外几本书提供了帮助,我永远感谢他。
Herbert Schildt
Mahomet, Illinois