标题：项目实践精解:Java核心技术应用开发(第二版)
图书信息
书名：项目实践精解：Java核心技术应用开发（第二版）         作者：梁立新  郭锐 编著
ISBN  978-7-121-11353-6
出版日期：2010年8月 
定价：69.00元（含光盘1张）
开本：16开 
页码：524页
内 容 简 介
本书作者有多年开发和教学经验，并且有很多学生目前正在从事Java开发工作。因此，作者清楚Java核心技术的合理学习路线，以及在学习过程中的注意事项。
前  言
在开始学习Java之前，我们要解决的第一个问题就是：为什么选择Java？
其实答案只有一个字：快！
Java快在以下3个方面。
（1）就业快：Java是目前企业需求量最大、应用范围最广的技术之一，所以就业机会很多。
（2）入门快：Java是一门相对简单的技术，对相关基础要求较低，学习曲线比较平缓，入门速度较快。
（3）开发快：由于独特的跨平台性、简单性等特点，使用Java技术的开发速度较快，这样就保证了Java应用系统能尽早投入市场（Time-to-Market），产生效益。
我们会在后面的学习过程中详细解释这些快的原因。
如果选择了Java，那么下一步就是尽快掌握Java技术。学习任何技术都要从基础开始，这本书就是讲解Java核心技术的。读者如果简单调研一下就不难发现，市面上最多的就是这类Java基础入门的教材。那么，我们还有没有必要再多写一本没有特色、枯燥乏味的书呢？答案当然是否定的！做事就要做得更好，写书也不例外。作者从事软件设计开发工作十多年，最近才萌发了写一本好书的想法，因为作者希望推广一种最有效的学习与培训的捷径，这就是Project-driven training（项目驱动培训），也就是用项目实践来带动理论的学习。基于此，作者围绕一个项目（SuperVCD Store）来贯穿Java核心技术开发各个模块的理论讲解。这是本书最大的特色！通过项目实践，可以使技术应用有明确的目的性（为什么学），对技术原理更好地融会贯通（学什么），也可以更好地检验学习效果（学得怎样）。
本书的内容是以作者在亚思晟高端Java培训过程中的讲义和项目实训为基本素材整理出来的，同时结合了作者多年项目设计开发经验，具有良好的实践性和可操作性，具体化、通俗化。
本书特点
1．重项目实践
笔者多年项目开发经验的一个体会是“IT是做出来的，不是想出来的”。理论虽然重要，但一定要为实践服务！以项目为主线，带动理论的学习是最好、最快、最有效的方法！通过此书，笔者希望读者对项目开发流程有个整体了解，减少对项目实践的盲目感和神秘感，能够根据本书的体系循序渐进地动手做出自己的真实项目来。
2．重理论要点
本书以项目实践为主线，着重介绍Java核心技术理论中最重要、最精华的部分，以及它们之间的融会贯通，这才是本书的特色！读者首先通过项目把握整体概貌，然后深入局部细节，系统学习理论，再不断优化和扩展细节，完善整体框架和改进项目。
总之，既有整体框架，又有重点技术。一书在手，思路清晰，项目无忧！
为什么选择这本书
本书基于全新Project-driven training理念，围绕一个项目（SuperVCD Store）来贯穿Java核心技术开发各个模块的理论讲解，这是本书与市场上许多Java基础教材之间的最大区别。另外，随书提供生动清晰的多媒体视频讲座课件，会对读者快速入门和提高带来很大帮助。
本书与《项目实践精解》系列中其他图书的区别及联系
万丈高楼平地起，好的开头等于成功的一半！这些都说明打基础的重要性。本书就是介绍Java核心技术基础的。它是系列丛书《项目实践精解》中的一本，也是学习《项目实践精解：Java Web应用开发》和《项目实践精解：基于Struts-Spring-Hibernate的Java应用开发》的基础。
本书的组织结构和学习指南
常常有开发人员和学员问我，什么是学习Java的最佳途径？
我的回答是“多做，以项目驱动”。
学员又继续问我，那学习理论就不重要了吗？
我的回答是“当然也重要，但同样需要以项目驱动”。
为什么呢？试想一下，当你面对上百页的参考书或者文档时，是否会茫然不知所措，不知如何开始，不知彼此谁更重要。所以，只有以项目驱动才能更好地明确重点和主线，才能更好地分配时间和精力，这样才是最有效的。
本书围绕一个完整的项目来组织和学习Java核心技术。
第1章  Java核心技术概述
首先介绍Java的历史、现状和特点；之后引入Java核心技术中最重要的面向对象基本概念：封装、继承和多态；最后概述Java核心技术的体系结构，包括基础部分和应用部分等。
第2章  SuperVCD Store项目概述
作者希望推广一种有效的学习与培训的捷径，这就是Project-driven training，也就是用项目实践来带动理论的学习。本章我们重点介绍一个完整的项目（SuperVCD Store），包括需求分析、结构分析和运行指南。
接下来我们具体介绍Java核心技术开发和编码。
第3章  Java启动（Getting Started）
学习Java开发的第一步是搭建Java开发环境，包括熟悉Java开发环境的配置和JDK开发工具；之后了解Java的核心特性，包括Java虚拟机、垃圾回收器、Java代码安全检查等；接着在此基础上掌握Java应用程序开发的基本概念，包括定义类、对象、包、应用程序，以及学习如何编辑、编译和运行Java应用程序。
第4章  Java基础语法（一）：标识符、关键字及数据类型
学习Java语言，首先要学习基础语法。本章首先介绍标识符（Identifier）、关键字（Keyword）、变量和常量等基本元素，然后介绍Java的数据类型，包括基本类型和引用类型。
第5章  Java基础语法（二）：表达式及流程控制
本章继续介绍Java基础语法，包括：Java运算符、表达式运算（包括运算符的优先级和数据类型转换）和流程控制（包括顺序流程、分支流程和循环流程）。
第6章  Java基础语法（三）：数组
数组也是Java语言中的一个重要组成部分。本章将介绍数组的声明、生成和初始化，数组的使用，以及多维数组的基本原理。
第7章  Java面向对象核心语法
在前几章的基础之上，我们进入本书重点内容的学习，也就是面向对象的重要概念。本章介绍面向对象核心语法，包括：封装（Java中的类、方法和变量，以及构造方法和方法重载）、继承（继承概念和方法重写）和多态（多态概念和多态实现）。
第8章  Java面向对象高级语法
本章我们继续介绍面向对象的一些高级特性，包括：静态（static）变量、方法和初始化程序块，最终（final）类、变量和方法，访问控制（Access Control），抽象类和方法（Abstract Classes and Methods），以及接口（Interface）、基本类型包装器（Wrappers）、集合、内部类、反射机制和一些常用类的介绍等。
第9章  Java异常处理
异常处理也是Java的一个重要概念，它能够保证程序运行的强壮性。本章内容包括：异常定义、异常分类、异常处理（try，catch，finally，throws，throw语句）和自定义异常等。
第10章  使用AWT建立图形用户界面
本章及以后的内容属于Java核心技术的应用部分或高级部分。本章介绍如何使用AWT建立图形用户界面，包括：AWT概述，容器、组件和布局管理器，AWT事件处理（事件、事件处理器和适配器等）。
第11章  使用Swing建立图形用户界面
在AWT基础之上，本章介绍如何使用Swing这个改进了的技术建立更好的图形用户界面，包括：Java Foundation Classes（JFC）简介、Swing组件（Components）及Swing容器（Containers）等。
第12章  Applet编程技术 
Applet是使用Java语言编写的一段代码，可以在浏览器环境中运行。Applet实际上是一种特殊的图形用户界面程序。本章介绍Applet编程技术，包括：Applet简介、Applet生命周期、Applet的安全限制，以及Applet与浏览器之间的相互通信等。
第13章  多线程高级编程 
对多线程的支持，是Java语言的一个重要优点，它可以实现代码的并行运行，提高程序的性能。本章介绍多线程高级编程技术，包括：线程简介，创建、初始化和启动线程，线程状态的转换，资源同时读取问题和线程的同步，以及使用wait/notify进行线程通信等。
第14章  使用输入/输出类
输入/输出是任何计算机语言都要涉及的，Java也不例外。本章介绍如何使用输入/输出类，包括：Java输入/输出流简介、io包的层次结构、文件和目录的操作、常用输入/输出类，以及对象流和对象序列化等。
第15章  使用TCP/IP和UDP/IP开发网络程序
Java自诞生起，就是面向网络的。本章介绍使用TCP/IP和UDP/IP开发网络程序的方法，包括：网络编程简介、理解TCP/IP及UDP/IP协议、使用ServerSocket和Socket开发TCP/IP网络程序、基于URL的高层次Java网络编程、使用DatagramPacket和DatagramSocket开发UDP/IP网络程序等。
第16章  使用JDBC技术开发数据库应用
Java语言可以通过使用JDBC技术连接关系型数据库管理系统RDBMS。JDBC提供了一组API，使用这些API可以很简便地操作RDBMS。本章讲解了数据库的基本概念、操作数据库的SQL语句，以及如何使用JDBC操作RDBMS。
本章提供了使用关系型数据库存储SuperVCD音乐数据、图形客户端使用JDBC连接并操作数据库的代码，从而使开发人员可以充分理解使用数据库的优势。
在本书附录中，我们介绍了Java集成开发环境（IDE）Eclipse开发工具、Java编程规范、与Java开发有关的UNIX介绍、Java与C++比较、Java本地接口（Java Native Interface），以及JDK 6.0中增加的一些新特性等。
每章的基本结构
 理论介绍
 演示代码demo
 项目实例
 本章总结
 思考题（中英文概念和作业）（注：题目是分级别的，级别越高，难度越大。）
 练习（注：题目是分级别的，级别越高，难度越大。）
本书是否适合您
阅读此书，要求读者具备计算机编程基础知识。
本书结构清晰、注重实用、深入浅出，非常适合作为Java核心技术的培训教材或自学教材，同时也适合作为Java开发人员的参考书。
感谢
本书由梁立新、郭锐主持编写，其他参与编写的人员有梁恒、沈彬、于亚杰、孙夏、张瑞、张洪亮、武永琪、刘执勇。
本书在编写过程中得到了许多支持和帮助。北京亚思晟商务科技有限公司负责本书的审校和监制工作；部分工作人员利用宝贵时间为本书提供项目相关代码与文档，并测试了项目的功能和性能；朋友和家人，特别是妻子Linda，对本书提供了有益的建议和帮助。在此表示衷心的感谢。最后，感谢电子工业出版社对本书出版的协助。
联系方
与此书相关的问题解答及勘误，会及时出现在Blog里。
2010年3月
目  录
第1章  Java核心技术概述 1
1.1  Java产生的历史、现状和特点 1
1.1.1  Java产生的历史 1
1.1.2  Java的现状 2
1.1.3  Java语言的特点 2
1.2  Java与面向对象 5
1.2.1  传统的面向过程和现代的面向对象程序设计语言 6
1.2.2  抽象的概念 6
1.2.3  面向对象编程的3个原则 7
1.2.4  类和实例对象的性质 10
1.3  Java核心技术体系结构 10
1.3.1  Java核心技术基础部分 11
1.3.2  Java核心技术应用部分 12
本章总结 15
第2章  SuperVCD Store项目概述 16
2.1  项目需求分析 16
2.2  项目结构分析和运行指南 20
2.2.1  应用程序结构 20
2.2.2  项目运行指南 20
本章总结 21
第3章  Java启动（Getting Started） 22
3.1  搭建Java开发环境 22
3.1.1  Java开发环境的配置 22
3.1.2  JDK简介 25
3.2  Java核心特性 33
3.2.1  Java虚拟机 33
3.2.2  垃圾回收机制 33
3.2.3  代码安全性检查机制 34
3.3  Java程序开发介绍 35
3.3.1  定义Java程序的基本元素 36
3.3.2  类和对象基本概念 37
3.3.3  编译和运行Java应用程序 40
3.3.4  应用小程序 42
3.4  项目实践 44
本章总结 44
思考题（Review Questions） 45
练习（Assignment） 45
第4章  Java基础语法（一）：标识符、关键字及数据类型 47
4.1  标识符 47
4.2  关键字 48
4.3  变量 48
4.4  常量 50
4.5  数据类型 51
4.5.1  基本类型 51
4.5.2  引用类型 55
4.6  项目实践 56
本章总结 59
思考题（Review Questions） 59
练习（Assignment） 60
第5章  Java基础语法（二）：表达式及流程控制 61
5.1  运算符 61
5.1.1  算术运算符 61
5.1.2  关系运算符 64
5.1.3  逻辑运算符 65
5.1.4  位运算符 67
5.1.5  赋值运算符 73
5.1.6  条件运算符 74
5.1.7  其他运算符 75
5.2  表达式 75
5.2.1  运算符的优先级 75
5.2.2  数据类型转换 77
5.3  Java控制语句 79
5.3.1  顺序流程 80
5.3.2  分支流程 80
5.3.3  循环流程 82
5.3.4  与程序转移有关的其他语句 84
5.3.5  异常处理语句：
try-catch-finally 84
5.4  项目实践 85
本章总结 85
思考题（Review Questions） 85
练习（Assignment） 86
第6章  Java基础语法（三）：数组 87
6.1  数组的声明、生成和初始化 87
6.1.1  数组的声明 87
6.1.2  数组的生成 88
6.1.3  数组的初始化 88
6.2  数组的使用 90
6.3  多维数组 91
6.3.1  二维数组的声明 91
6.3.2  二维数组的生成和初始化 91
6.3.3  二维数组的使用 92
6.4  枚举类型的引入 94
6.5  项目实践 94
本章总结 95
思考题（Review Questions） 95
练习（Assignment） 96
第7章  Java面向对象核心语法 97
7.1  面向对象的概念 97
7.1.1  对象和类概述 97
7.1.2  类、方法和变量 101
7.1.3  构造方法 103
7.1.4  方法的重载 103
7.1.5  this的使用 106
7.2  封装 107
7.3  继承 109
7.3.1  继承的概念 109
7.3.2  方法重写（overriding） 111
7.3.3  super的使用 113
7.3.4  继承中的构造方法调用 114
7.3.5  finalize()方法的使用 115
7.3.6  对象的比较 116
7.4  多态 117
7.4.1  多态的概念 117
7.4.2  多态的实现条件 117
7.4.3  多态的代码实现 119
7.5  项目实践 121
本章总结 127
思考题（Review Questions） 128
练习（Assignment） 129
第8章  Java面向对象高级语法 130
8.1  静态（static）变量、方法和初始化程序块 130
8.1.1  静态（static）变量 130
8.1.2  静态（static）方法 131
8.1.3  静态初始化块 133
8.1.4  引入含有静态方法的类 134
8.2  最终（final）类、变量和方法 134
8.3  访问控制（Access Control） 135
8.3.1  类的访问控制 135
8.3.2  类成员变量和成员方法的访问控制 135
8.4  抽象类与抽象方法 136
8.5  接口（Interface） 137
8.5.1  接口的定义 138
8.5.2  接口的实现 138
8.6  基本类型包装器（Wrappers） 140
8.6.1  Double和Float 141
8.6.2  Byte，Short，Integer和Long 143
8.6.3  Character 147
8.6.4  Boolean 149
8.6.5  类型的自动装箱与自动拆箱 149
8.7  集合（Collection）框架 150
8.7.1  Collection 151
8.7.2  List 152
8.7.3  Set 154
8.7.4  Map接口 157
8.7.5  泛型集合 161
8.7.6  使用for-each操作Collection集合 164
8.8  项目实践 168
8.9  内部类 170
8.9.1  内部类概述 170
8.9.2  4种类型的内部类 174
8.10  反射（Reflection） 181
8.10.1  反射的工作原理 181
8.10.2  反射中的主要方法 182
8.10.3  反射的使用 183
8.10.4  反射的安全性和性能 186
8.11  Java常用类介绍 187
8.11.1  String 187
8.11.2  StringBuffer 201
8.11.3  StringTokenizer（字符串标记） 206
8.11.4  Date（日期） 208
8.11.5  Calendar（日历） 209
8.11.6  Random 212
8.11.7  DateFormat类 214
8.11.8  SimpleDateFormat类 216
8.11.9  Runtime 217
8.11.10  Math 220
本章总结 222
思考题（Review Questions） 223
练习（Assignment） 224
第9章  Java异常处理 225
9.1  异常定义 225
9.2  异常分类 225
9.3  异常处理 226
9.4  自定义异常 232
9.5  项目实践 233
本章总结 234
思考题（Review Questions） 235
练习（Assignment） 235
第10章  使用AWT建立图形用户
界面 236
10.1  AWT介绍 236
10.2  容器、组件和布局管理器 237
10.2.1  容器 237
10.2.2  布局管理 238
10.2.3  AWT组件库 244
10.3  AWT事件处理 252
10.3.1  AWT事件处理基本概念 252
10.3.2  事件 253
10.3.3  事件处理器（监听器） 254
10.3.4  适配器（Adapter） 261
本章总结 268
思考题（Review Questions） 268
练习（Assignment） 269
第11章  使用Swing建立图形用户
界面 270
11.1  Swing简介 270
11.2  Swing组件（Components） 272
11.2.1  Swing组件的层次结构 272
11.2.2  Swing组件的特性 274
11.2.3  Swing组件和容器 276
11.3  项目实践 290
本章总结 309
思考题（Review Questions） 309
练习（Assignment） 309
第12章  Applet编程技术 310
12.1  Applet简介 310
12.2  Applet基本概念 311
12.2.1  Applet的生命周期 312
12.2.2  Applet的主要方法 312
12.3  Applet的安全性 315
12.4  Applet与浏览器相互间的通信 315
本章总结 324
思考题（Review Questions） 324
练习（Assignment） 324
第13章  多线程高级编程 326
13.1  多线程简介 326
13.2  多线程的使用 332
13.2.1  创建线程 333
13.2.2  启动线程 336
13.2.3  线程的其他方法 338
13.3  线程状态的转换 338
13.4  资源同时读取问题和线程的同步 341
13.4.1  基本概念 341
13.4.2  多线程之间的同步和通信 342
13.4.3  线程死锁 349
13.5  项目实践 350
本章总结 352
思考题（Review Questions） 352
练习（Assignment） 353
第14章  使用输入/输出类 355
14.1  Java输入/输出流简介 355
14.2  j包的层次结构 356
14.3  常用输入/输出类 360
14.3.1  常用输入类 360
14.3.2  常用输出类 362
14.4  文件和目录的操作 368
14.4.1  文件基本操作 368
14.4.2  随机访问文件 369
14.5  对象流和对象序列化 370
14.5.1  序列化概述 370
14.5.2  序列化的实现 371
14.5.3  序列化机制 371
14.6  项目实践 374
本章总结 382
思考题（Review Questions） 382
练习（Assignment） 383
第15章  使用TCP/IP和UDP/IP开发网络程序 384
15.1  Java网络编程简介 384
15.2  理解TCP/IP及UDP/IP协议 385
15.3  使用ServerSocket和Socket开发TCP/IP网络程序 386
15.3.1  Socket通信概述 386
15.3.2  Socket通信的一般过程 387
15.4  基于URL的高层次Java网络编程 394
15.4.1  URL（统一资源定位器） 394
15.4.2  URL的组成 394
15.4.3  创建一个URL 394
15.4.4  通过URLConnection读取数据 395
15.5  使用DatagramPacket和DatagramSocket开发UDP/IP网络程序 396
15.5.1  Datagram通信的基本概念 396
15.5.2  基于UDP的程序开发 397
15.6  项目实践 403
本章总结 407
思考题（Review Questions） 407
练习（Assignment） 407
第16章  使用JDBC技术开发数据库应用 409
16.1  数据库的基本概念 409
16.1.1  什么是数据库 409
16.1.2  数据库在应用程序中的重要地位 409
16.1.3  数据库管理系统（DBMS） 409
16.1.4  数据库的发展历程 409
16.1.5  关系型数据库（RDBMS）简介 410
16.2  SQL（Structured Query Language） 410
16.3  JDBC开发基础流程 418
16.3.1  使用JDBC-ODBC Bridge桥接方式连接数据库 419
16.3.2  使用纯JDBC连接数据库 420
16.3.3  JDBC连接MySQL数据库实例 421
16.4  Statement对象 424
16.5  PreparedStatement对象 425
16.6  JDBC异常处理 425
16.6.1  SQLException类 425
16.6.2  JDBC警告（SQLWarning） 426
16.7  JDBC事务处理 427
16.7.1  保证数据真实、正确与完整性（Integrity） 427
16.7.2  解决数据同时访问问题（Concurrency Control） 429
16.8  项目实践 430
本章总结 435
思考题（Review Questions） 435
练习（Assignment） 435
附录A  Java集成开发环境（IDE）Eclipse介绍 437
附录B  Java编程规范 446
附录C  与Java开发有关的UNIX介绍 458
附录D  Java与C++比较 465
附录E  Java本地接口 483
附录F  JDK 6.0新特性 488