序
1 进入Java的世界
Java的工作方式
Java的程序结构
剖析类
main()方法
循环
条件分支
设计程序
术语制造机
谈话录
习题
2 拜访对乡村
椅子大战
继承
覆盖
什么是类
创建你的第一个对象
使用main()
猜数字
习题
3 认识变量
声明变量
Primitive主数据类型
Java关键字
引用变量
对象的声明与赋值
可回收堆空间
数组
习题
4 对象的行为
操作对象状态的方法
方法参数与返回类型
值传递
Getters与Setters
封装
数组中的引用
习题
5 超强力方法
创建战舰游戏
简单版
编写伪码
测试
编写程序
完整版
用Math.random()产生随机数
预先输入好的程序
循环
类型转换
用Integer.parseInt()转换字符串
习题
6 使用Java函数库
分析bug
ArrayList
修改战舰游戏
设计真正的游戏
游戏的伪码
游戏程序
布尔表达式
使用Java API
使用包
查询说明文件
习题
7 对象村的优质生活
继承
设计继承层次
运用继承避免重复的程序代码
方法的覆盖
继承的好处
多态
覆盖的规则
重载
习题
8 深入多态
不该初始化的class
抽象类
抽象方法
多态的应用
对象之母:Object
取出数组元素
编译器对引用类型的检查
探索内部对象
多态引用
对象引用类型转换
多重继承的麻烦
使用接口
习题
9 对象的前世今生
对象与变量的生存空间
stack上的方法
局部变量的空间
实例变量的空间
创建对象的奇迹
构造函数
鸭子的初始状态
构造函数的覆盖
父类的构造函数
使用this()
对象的生命周期
资源回收
习题
10 数字很重要
Math类
静态方法
静态变量
常数
Math方法
包装类
Autoboxing
数字的格式化
日期的格式化与操作
静态的引用
习题
11 有风险的行为
创建MIDI音乐播放器
调用有风险的程序代码
异常
编译器会确认你已经注意到风险
捕获异常状况
try/catch块的流程控制
finally块
处理多重异常
声明异常
处理或再抛出
程序料理
习题
12 看图说故事
GUI第一步
获得用户事件
实现listener接口
取得ActionListener
GUI的图像
paintComponent()乐趣多又多
Graphics2D对象
内部类
动画
程序料理
习题
13 使用Swing
Swing组件
Layout管理器
三种Layout管理器
BorderLayout
FlowLayout
BoxLayout
JTextField
JTestArea
JCheckBox
JList
程序料理
习题
14 保存对象
保存对象状态
写入文件的序列化对象
输入/输出串流
对象序列化
实现Serializable接口
使用瞬时变量
对象解序列化
写入文本文件
java.io.File
读取文本文件
拆分字符串
程序料理
习题
15 网络联机
聊天程序概述
连接、发送与接收
网络与Socket
TCP端口
读取socket
向socket写入数据
每日一句
简单的服务器
服务器端程序代码
编写客户端程序代码
多重交流
启动新的线程
Runnable
Thread对象的三种状态
任务循环
线程调度
线程的睡眠
启动两个线程
同步执行的问题
名人丑闻
不可分割的动作
大家都有锁
可怕的“丢失更新”问题
同步化的方法
死锁
多线程客户端扯个啮噬
SimpleChatServer
习题
16 数据结构
Collections
集合的排序
泛型和类安全
Comparable的排序
自定义Comparator
集合的API
可避免重复的HashMap
hashCode()与equals()
HashMap
多态的万用字符
习题
17 发布程序
部署的选择
将源文件与类文件分开
可执行的JAR
执行JAR文件
将class打包
package的目录结构
编译与执行包
加上-d的编译操作
创建可执行的JAR
Java Web Start(JWS)
创建和部署JWS程序
习题
18 分布式计算
附录:十大遗珠之憾