图书目录

第1部分入门

第1章Java入门

第2部分程序设计基础

第2章程序设计基础: 变量及其运算

第3章程序设计基础: 流程控制和数组

第4章实践指导1

第4部分工具API

第9章Java异常处理

第10章Java常用API1

第11章Java常用API2

第12章Java多线程开发

第13章Java IO操作

第14章实践指导3

第6部分Java图形开发

第19章Java绘图: 基础知识

第20章Java绘图: 高级知识

第21章实践指导5

第3部分面向对象

第5章面向对象编程1

第6章面向对象编程2

第7章面向对象编程3

第8章实践指导2

第5部分GUI开发

第15章用Swing开发GUI程序

第16章Java界面布局管理

第17章Java事件处理

第18章实践指导4

第7部分Java网络编程

第22章用TCP开发网络应用程序

第23章用UDP开发网络应用程序

第24章URL编程和Applet开发

第25章实践指导6

第8部分Java密码编程

第26章Java加密解密

第27章Java数字签名

第9部分Java反射

第28章Java反射技术

第29章实践指导7

第10部分综合案例

第30章综合案例: 用TCP技术开发即时通信软件

2. 章节内容介绍

全书共分为10部分,第1部分为入门部分,包括1章。

第1章为Java入门,介绍了Java的发展历史和Java的运行机制,介绍了Java程序开发需要的准备工作。

第2部分为程序设计基础部分,包括3章。

第2章为程序设计基础: 变量及其运算,首先介绍了变量的定义以及变量的数据类型,然后详细介绍了各种变量数据类型及其转换,接下来讲解了Java中的各种运算,最后介绍了运算符的优先级。

第3章为程序设计基础: 流程控制和数组,首先介绍了三种结构的用法,并讲解了break和continue语句。最后,本章讲解了数组的作用、定义、性质和用法,以及二维数组的使用。

第4章为实践指导1,利用几个案例对程序设计基础进行复习。

第3部分为面向对象部分,包括4章。

第5章为面向对象编程1,主要介绍面向对象的基本原理和基本概念,包括类、对象、成员变量、成员函数、构造函数以及函数的重载。

第6章为面向对象编程2,针对面向对象的应用,详细讲解了一些比较高级的概念。首先讲解了静态变量、静态函数、静态代码块,然后讲解了封装、包和访问控制修饰符,最后简单介绍类中类的使用。

第7章为面向对象编程3,讲解了继承和覆盖,接下来讲解了多态性、抽象类和接口的应用。最后讲解了final关键字、Object类、jar命令,以及Java文档的使用。

第8章为实践指导2,利用几个案例,来对面向对象内容进行复习。

第4部分为工具API部分,包括6章。

第9章为Java异常处理,讲解了异常处理的原理以及需要注意的问题。

第10章为Java常用API1,讲解数值运算、字符串处理、数据类型转换和常见系统类。

第11章为Java常用API2,讲解Java编程中重要的工具类,重点讲解集合框架和日期操作。

第12章为Java多线程开发,对多线程的开发、线程的控制以及线程的安全性进行讲解。

第13章为Java IO操作,对文件的操作、字节流的读写和字符流的读写进行讲解,最后将对RandomAccessFile类和Properties类进行介绍。

第14章为实践指导3,利用几个案例对工具API进行复习。

第5部分为Java GUI开发部分,包括4章。

第15章为用Swing开发GUI程序,讲解javax.swing中的一些API,主要涉及窗口开发、控件开发、颜色、字体和图片开发,最后讲解了一些常见功能。

第16章为Java界面布局管理,讲解几种最常见的布局: FlowLayout、GridLayout、BorderLayout、空布局以及其他一些比较复杂的布局方式。最后用一个计算器程序将其进行了总结。

第17章为Java事件处理,首先讲解事件的基本原理,然后讲解事件的开发流程,接下来讲解几种最常见的事件的处理,最后讲解用Adapter简化事件的开发。

第18章为实践指导4,利用一个用户管理系统的案例,来对前面内容进行复习。

第6部分为Java图形开发部分,包括3章。

第19章为Java绘图: 基础知识,首先讲解了画图的原理,以及画图的方法,然后讲解了画字符串,最后讲解了画图片,以及图片的缩放、裁剪和旋转。

第20章为Java绘图: 高级知识,重点围绕键盘和鼠标操作画图来进行讲解,最后讲解动画的原理和实现,以及双缓冲和图像保存的问题。

第21章为实践指导5,利用两个小软件的开发,来对前面内容进行复习。

第7部分为Java网络编程部分,包括4章。

第22章为用TCP开发网络应用程序,利用TCP编程,实现一个简单的聊天室。

第23章为用UDP开发网络应用程序,基于UDP协议的客户端和服务器端之间的通信实现双向聊天系统和多客户聊天系统。

第24章为URL编程和Applet开发,针对网络编程中另外两个比较常见的内容: URL编程和Applet开发进行讲解。

第25章为实践指导6,将利用一个网络打字游戏,来对网络编程内容进行复习。

第8部分为Java密码编程部分,包括2章。

第26章为Java加密解密,讲解加解密原理,并以Java语言为例,实现了一些常见的加密解密算法。

第27章为Java数字签名,讲解了数字签名的原理,以Java语言为例,实现了数字签名算法。

第9部分为Java反射编程部分,包括2章。

第28章为Java反射技术,对反射技术进行讲解。

第29章为实践指导7,用反射技术编写简单的框架,通过两个小的框架进行讲解。

第10部分为综合案例部分,包括1章。

第30章为综合案例: 用TCP技术开发即时通信软件,用一个即时通信软件的案例,来对本书大部分内容进行复习。

由于时间仓促和作者的水平有限,书中的错误和不妥之处在所难免,敬请读者批评指正。

有关本书的意见反馈和咨询,读者可在清华大学出版社网站相关版块中与笔者进行交流。

郭克华

2012年3月

目录

第1部分入门

第1章Java入门

本章术语

1.1认识Java

1.1.1认识编程语言

1.1.2Java的来历

1.1.3Java为什么流行

1.1.4Java的三个版本

1.1.5编程前的准备工作

1.2安装JDK

1.2.1获取JDK

1.2.2安装JDK

1.2.3安装目录介绍

1.2.4环境变量设置

1.3开发第一个Java程序

1.3.1如何编写源代码

1.3.2如何将源代码编译成.class文件

1.3.3如何执行.class文件

1.3.4新手常见错误

1.4用Eclipse开发Java程序

1.4.1什么是Eclipse

1.4.2安装Eclipse

1.4.3如何建立项目

1.4.4如何开发Java程序

1.4.5如何维护项目

本章知识体系

第2部分程序设计基础

第2章程序设计基础:变量及其运算

本章术语

2.1认识变量

2.1.1什么是变量

2.1.2变量有哪些类型

2.2如何使用变量

2.2.1如何使用整型变量

2.2.2如何使用浮点型变量

2.2.3如何使用字符型变量

2.2.4如何使用布尔型变量

2.2.5基本数据类型之间的类型转换

2.2.6基本数据类型和字符串之间的转换

2.2.7变量的作用范围

2.3注释的书写

2.4Java中的运算

2.4.1算术运算

2.4.2赋值运算

2.4.3关系运算

2.4.4逻辑运算

2.4.5运算符的优先级

本章知识体系

第3章程序设计基础:流程控制和数组

本章术语

3.1判断结构

3.1.1为什么需要判断结构

3.1.2if结构

3.1.3switch结构

3.2认识循环结构

3.2.1为什么需要循环结构

3.2.2while循环

3.2.3dowhile循环

3.2.4for循环

3.2.5循环嵌套

3.2.6break和continue

3.3数组

3.3.1为什么需要数组

3.3.2如何定义数组

3.3.3如何使用数组

3.3.4数组的引用性质

3.3.5数组的应用

3.3.6多维数组

本章知识体系

第4章实践指导1

术语复习

4.1关于变量和数据类型的实践

4.2流程控制和数组的综合实践

第3部分面 向 对 象

第5章面向对象编程1

本章术语

5.1认识类和对象

5.1.1为什么需要类

5.1.2如何定义类

5.1.3如何使用类实例化对象

5.1.4如何访问对象中的成员变量

5.1.5对象的引用性质

5.2认识成员函数

5.2.1为什么需要函数

5.2.2如何定义和使用成员函数

5.2.3函数参数的传递

5.2.4认识函数重载

5.3认识构造函数

5.3.1为什么需要构造函数

5.3.2如何定义和使用构造函数

本章知识体系

第6章面向对象编程2 

本章术语

6.1静态变量和静态函数

6.1.1为什么需要静态变量

6.1.2静态变量的常见应用

6.1.3认识静态函数

6.1.4静态代码块

6.2使用封装

6.2.1为什么需要封装

6.2.2如何实现封装

6.3使用包

6.3.1为什么需要包

6.3.2如何将类放在包中

6.3.3如何访问包中的类

6.4使用访问控制修饰符

6.4.1什么是访问控制修饰符

6.4.2类的访问控制修饰符

6.4.3成员的访问控制修饰符

6.5使用类中类

本章知识体系

第7章面向对象编程3 

本章术语

7.1使用继承

7.1.1为什么需要继承

7.1.2如何实现继承

7.1.3继承的底层本质

7.2成员的覆盖

7.2.1什么是成员覆盖

7.2.2成员覆盖有何作用

7.3使用多态性

7.3.1什么是多态

7.3.2如何使用多态性

7.3.3父子类对象的类型转换

7.4抽象类和接口

7.4.1为什么需要抽象类

7.4.2为什么需要接口

7.5其他内容

7.5.1final关键字

7.5.2Object类

7.6一些工具的使用

7.6.1将字节码打包发布

7.6.2文档的使用

本章知识体系

第8章实践指导2

术语复习

8.1单例模式的设计

8.1.1需求简介

8.1.2不用单例模式的效果

8.1.3最原始的单例模式

8.1.4首次改进

8.1.5再次改进

8.1.6思考题

8.2利用继承和多态扩充程序功能

8.2.1需求简介

8.2.2实现方法

8.2.3出现的问题

8.2.4改进

8.2.5测试

第4部分工具API

第9章Java异常处理

本章术语

9.1认识异常

9.1.1生活中的异常

9.1.2软件中的异常

9.1.3为什么要处理异常

9.1.4异常机理

9.1.5常见异常

9.2异常的就地捕获

9.2.1为什么要就地捕获

9.2.2如何就地捕获异常

9.2.3如何捕获多种异常

9.2.4用finally保证安全性

9.3异常的向前抛出

9.3.1为什么要向前抛出

9.3.2如何向前抛出

9.4自定义异常

9.4.1为什么需要自定义异常

9.4.2如何自定义异常

本章知识体系

第10章Java常用API1

本章术语

10.1数值运算

10.1.1用Math类实现数值运算

10.1.2实现随机数

10.2用String类进行字符串处理

10.3用StringBuffer类进行字符串处理

10.4基本数据类型的包装类

10.4.1认识包装类

10.4.2通过包装类进行数据转换

10.5常用系统类

10.5.1认识System类

10.5.2认识Runtime类

本章知识体系

第11章Java常用API2

本章术语

11.1认识Java集合

11.1.1为什么需要集合

11.1.2Java中的集合

11.2使用一维集合

11.2.1认识一维集合

11.2.2使用List集合

11.2.3使用Set集合

11.2.4使用Collections类对集合进行处理

11.2.5使用泛型简化集合操作

11.3Java中的二维集合

11.3.1使用Map集合

11.3.2使用Hashtable和Properties

11.4日期操作

11.4.1认识Date类

11.4.2认识Calendar类

11.4.3如何格式化日期

11.4.4更进一步: 如何格式化数值

本章知识体系

第12章Java多线程开发

本章术语

12.1认识多线程

12.1.1为什么需要多线程

12.1.2继承Thread类开发多线程

12.1.3实现Runnable接口开发多线程

12.1.4两种方法有何区别

12.2如何控制线程运行

12.2.1为什么要控制线程运行

12.2.2传统方法的安全问题

12.2.3如何控制线程的运行

12.3线程协作安全

12.3.1什么是线程协作

12.3.2一个有问题的案例

12.3.3如何解决

12.4线程同步安全

12.4.1什么是线程同步

12.4.2一个有问题的案例

12.4.3如何解决

12.4.4小心线程死锁

12.5认识定时器

12.5.1为什么需要定时器

12.5.2如何使用定时器

本章知识体系

第13章Java IO操作

本章术语

13.1认识IO操作

13.2用File类操作文件

13.2.1认识File类

13.2.2使用File类操作文件

13.2.3使用File类操作目录

13.3字节流的输入输出

13.3.1认识字节流

13.3.2如何读写文件

13.3.3如何读写对象

13.4字符流的输入输出

13.4.1认识字符流

13.4.2如何读写文件

13.4.3如何进行键盘输入

13.5和IO操作相关的其他类

13.5.1用RandomAccessFile类进行文件读写

13.5.2使用Properties类

本章知识体系

第14章实践指导3

术语复习

14.1字符频率统计软件

14.1.1软件功能简介

14.1.2重要技术

14.1.3项目结构

14.1.4代码编写

14.1.5思考题

14.2文本翻译软件

14.2.1软件功能简介

14.2.2重要技术

14.2.3项目结构

14.2.4代码编写

14.2.5思考题

14.3用享元模式优化程序性能

14.3.1为什么需要享元模式

14.3.2重要技术

14.3.3代码编写

14.3.4思考题

第5部分GUI开发

第15章用Swing开发GUI程序

本章术语

15.1认识GUI和Swing

15.1.1什么是GUI

15.1.2什么是Swing

15.2使用窗口

15.2.1用JFrame类开发窗口

15.2.2用JDialog类开发窗口

15.3使用控件

15.3.1什么是控件

15.3.2标签、按钮、文本框和密码框

15.3.3单选按钮、复选框和下拉列表框

15.3.4菜单

15.3.5使用JOptionPane

15.3.6其他控件

15.4颜色、字体和图像

15.4.1如何使用颜色

15.4.2如何使用字体

15.4.3如何使用图片

15.5几个有用的功能

15.5.1如何设置界面的显示风格

15.5.2如何获取屏幕大小

15.5.3如何用默认应用程序打开文件

15.5.4如何将程序显示为系统托盘

本章知识体系

第16章Java界面布局管理

本章术语

16.1认识布局管理

16.1.1为什么需要布局管理

16.1.2认识LayoutManager

16.2使用FlowLayout

16.2.1什么是FlowLayout

16.2.2如何使用FlowLayout

16.3使用GridLayout

16.3.1什么是GridLayout

16.3.2如何使用GridLayout

16.4使用BorderLayout

16.4.1什么是BorderLayout

16.4.2如何使用BorderLayout

16.5综合案例: 计算器

16.5.1案例需求

16.5.2关键技术

16.5.3代码编写

16.6使用空布局

16.6.1什么是空布局

16.6.2如何使用空布局

本章知识体系

第17章Java事件处理

本章术语

17.1认识事件处理

17.1.1什么是事件

17.1.2事件处理代码的编写

17.1.3另外几种编程风格

17.2处理ActionEvent

17.2.1什么情况发出ActionEvent

17.2.2使用ActionEvent解决实际问题

17.3处理FocusEvent

17.3.1什么情况发出FocusEvent

17.3.2使用FocusEvent解决实际问题

17.4处理KeyEvent

17.4.1什么情况发出KeyEvent

17.4.2使用KeyEvent解决实际问题

17.5处理MouseEvent

17.5.1什么情况发出MouseEvent

17.5.2使用MouseEvent解决实际问题

17.6处理WindowEvent

17.6.1什么情况发出WindowEvent

17.6.2使用WindowEvent解决实际问题

17.7使用Adapter简化开发

本章知识体系

第18章实践指导4

术语复习

18.1用户管理系统功能简介

18.2关键技术

18.2.1如何组织界面

18.2.2如何访问文件

18.2.3如何保持状态

18.2.4还有哪些公共功能

18.3代码编写

18.3.1编写util包中的类

18.3.2编写frame包中的类

18.3.3编写主函数所在的类

18.4思考题

第6部分Java图形开发

第19章Java绘图: 基础知识

本章术语

19.1认识Java绘图

19.1.1为什么要学习绘图

19.1.2如何实现绘图

19.2用Graphics进行绘图

19.2.1什么是Graphics

19.2.2如何使用Graphics

19.2.3用Graphics实现绘图

19.2.4一个综合案例

19.3如何绘字符串

19.3.1为什么需要绘字符串

19.3.2如何绘字符串

19.3.3案例: 产生验证码

19.4如何绘图片

19.4.1为什么需要绘图片

19.4.2如何绘图片

19.4.3如何进行图片裁剪和缩放

19.4.4如何进行图片旋转

本章知识体系

第20章Java绘图: 高级知识

本章术语

20.1结合键盘事件进行绘图

20.1.1实例需求

20.1.2复习键盘事件

20.1.3代码编写

20.1.4解决重绘问题

20.2结合鼠标事件进行绘图

20.2.1实例需求

20.2.2复习鼠标事件

20.2.3代码编写

20.3动画制作

20.3.1实例需求

20.3.2关键技术

20.3.3代码编写

20.3.4如何使用双缓冲保存图片到文件

本章知识体系

第21章实践指导5

术语复习

21.1卡通时钟

21.1.1软件功能简介

21.1.2重要技术

21.1.3代码编写

21.1.4思考题

21.2拼图游戏

21.2.1软件功能简介

21.2.2重要技术

21.2.3代码编写

21.2.4思考题

第7部分Java网络编程

第22章用TCP开发网络应用程序

本章术语

22.1认识网络编程

22.1.1什么是网络应用程序

22.1.2认识IP地址和端口

22.1.3客户端和服务器

22.2用客户端连到服务器

22.2.1案例介绍

22.2.2如何实现客户端连接到服务器

22.2.3代码编写

22.3利用TCP实现双向聊天系统

22.3.1案例介绍

22.3.2如何实现双向聊天

22.3.3代码编写

22.4利用TCP实现多客户聊天系统

22.4.1案例介绍

22.4.2编写服务器程序

22.4.3编写客户端程序

本章知识体系

第23章用UDP开发网络应用程序

本章术语

23.1利用UDP实现双向聊天系统

23.1.1案例介绍

23.1.2服务器和客户端是如何交互的

23.1.3如何收发信息

23.1.4代码编写

23.2利用UDP实现多客户聊天系统

23.2.1案例介绍

23.2.2编写服务器程序

23.2.3编写客户端程序

本章知识体系

第24章URL编程和Applet开发

本章术语

24.1认识URL编程

24.1.1什么是URL

24.1.2认识URL类

24.1.3如何获取网页的内容

24.2认识Applet

24.2.1什么是Applet

24.2.2如何开发Applet

24.2.3如何使用Applet

24.3深入理解Applet

24.3.1Applet是如何运行的

24.3.2Applet功能的限制

24.3.3如何向Applet内传参数

本章知识体系

第25章实践指导6

术语复习

25.1网络打字游戏功能简介

25.2关键技术

25.2.1如何组织界面

25.2.2客户端如何掉下字母

25.2.3客户端如何实现加减分数

25.2.4客户端如何判断输了

25.3代码编写

25.3.1服务器端

25.3.2客户端

第8部分Java密码编程

第26章Java加密解密

本章术语

26.1认识加密

26.1.1为什么需要加密

26.1.2认识加密算法和密钥

26.2实现对称加密

26.2.1什么是对称加密

26.2.2用Java实现对称加密

26.3实现非对称加密

26.3.1什么是非对称加密

26.3.2用Java实现非对称加密

26.4实现单向加密

26.4.1什么是单向加密

26.4.2用Java实现MD5

本章知识体系

第27章Java数字签名

本章术语

27.1认识数字签名

27.1.1为什么需要数字签名

27.1.2数字签名的过程

27.2实现数字签名

27.2.1发送方生成签名

27.2.2接收方验证签名

27.3利用数字签名解决实际问题

27.3.1解决篡改问题

27.3.2解决抵赖问题

本章知识体系

第9部分Java反射

第28章Java反射技术

本章术语

28.1为什么要学习反射

28.1.1引入配置文件

28.1.2配置文件遇到的问题

28.2认识Class类

28.2.1什么是Class类

28.2.2如何获取一个类对应的Class对象

28.2.3如何获取类中的成员信息

28.3通过反射机制访问对象

28.3.1如何实例化对象

28.3.2如何给成员变量赋值

28.3.3如何调用成员函数

28.4何时使用反射

本章知识体系

第29章实践指导7

术语复习

29.1什么是框架

29.2动态异常处理框架

29.2.1框架功能简介

29.2.2重要技术

29.2.3框架代码编写

29.2.4使用该框架

29.3动态对象组装框架

29.3.1框架功能简介

29.3.2引入工厂

29.3.3引入配置文件

29.3.4重要技术

29.3.5框架代码编写

29.3.6使用该框架

第10部分综 合 案 例

第30章综合案例: 用TCP技术开发即时通信软件

术语复习

30.1即时通信软件功能简介

30.1.1服务器界面

30.1.2客户登录和注册

30.1.3消息收发界面

30.1.4在线名单刷新

30.2项目关键技术

30.2.1传输消息如何表示

30.2.2客户信息如何表示

30.2.3客户文件如何保存在服务器端

30.2.4如何读写客户文件

30.2.5基本模块结构

30.3编写服务器端

30.3.1准备工作

30.3.2编写app.Server类

30.3.3编写app.ChatThread类

30.3.4编写main.Main类

30.4编写客户端

30.4.1准备工作

30.4.2编写app.LoginFrame类

30.4.3编写app.ChatFrame类

30.4.4编写app.RegisterFrame类

30.4.5编写main.Main类

30.5思考题