第1篇 Java基础
第1章 初步认识Java
1.1 Java的概念
1.1.1 Java是什么
1.1.2 Java平台
1.1.3 Java的操作系统
1.1.4 Java的优点
1.2 Java的历史
1.2.1 Java的由来
1.2.2 Java的发展
1.3 如何配置Java开发环境
1.3.1 开发工具包
1.3.2 运行环境
1.3.3 JDK的安装和下载
1.3.4 环境变量的设置
1.3.5 环境变量的测试
1.4 第一个应用程序——HelloWorld
1.4.1 HelloWorld程序
1.4.2 编译与运行
1.4.3 编译和运行命令
1.5 小结
第2章 基本数据类型
2.1 数据类型
2.1.1 整型
2.1.2 浮点型
2.1.3 字符型
2.1.4 布尔型
2.2 常量
2.2.1 标识符
2.2.2 常量
2.3 变量
2.3.1 声明变量及初始化
2.3.2 变量的作用域
2.3.3 数据类型的自动转换
2.4 基本数据类型之间的转换
2.4.1 自动转换类型
2.4.2 强制转换类型
2.5 基本数据类型的对象包装类
2.6 注释
2.6.1 单行注释
2.6.2 区域注释
2.6.3 文档注释
2.7 小结
第3章 运算符详解
3.1 算术运算符
3.1.1 加法运算符
3.1.2 减法运算符
3.1.3 乘法运算符
3.1.4 除法运算符
3.1.5 取余运算符
3.1.6 自增、自减运算
3.2 关系与逻辑运算
3.2.1 等于/不等于运算
3.2.2 比较大小运算
3.2.3 “与”运算
3.2.4 “或”运算
3.2.5 “非”运算
3.3 三元运算符
3.4 位运算
3.5 移位运算
3.5.1 “>”右移运算
3.5.3 “>>>”无符号右移运算
3.5.4 具体实例
3.6 赋值运算
3.6.1 普通赋值运算
3.6.2 运算赋值运算
3.6.3 括号及运算符间的优先级关系
3.7 java.lang.Math类
3.7.1 数学常量
3.7.2 常用数学函数方法
3.8 小结
第4章 流程控制语句
4.1 if语句
4.1.1 常用语句形式
4.1.2 完整语句形式
4.2 if语句的嵌套
4.3 switch语句
4.3.1 switch判断语法
4.3.2 判断表达式
4.3.3 case表达式
4.4 switch实例
4.5 while循环语句
4.6 do-while循环语句
4.7 for循环语句
4.7.1 for循环语法
4.7.2 for循环实例
4.7.3 for实现其他循环
4.8 break语句
4.9 continue语句
4.10 小结
第5章 不可或缺的数组
5.1 数组的概念
5.2 一维数组
5.2.1 数组的声明
5.2.2 创建数组及初始化
5.2.3 数组的结构
5.2.4 数组长度及越界
5.2.5 数组程序实例
5.3 多维数组
5.3.1 多维数组的声明
5.3.2 创建多维数组
5.3.3 多维数组结构及初始化
5.4 访问多维数组
5.5 数组的相关用法
5.5.1 复制数组
5.5.2 数组修饰符
5.5.3 搜索数组
5.5.4 排序数组
5.5.5 Arrays类的sort方法
5.5.6 数组的比较
5.6 小结
第2篇 面向对象
第6章 对象和类的“二人转”
6.1 什么是面向对象
6.1.1 面向对象的由来
6.1.2 面向过程与面向对象思想的碰撞
6.1.3 面向对象的背景及特点
6.2 类与对象
6.2.1 成员变量
6.2.2 成员变量的默认值
6.2.3 对象引用变量
6.3 类的方法
6.4 方法和变量引用
6.4.1 调用不存在的方法或成员变量
6.4.2 用空引用进行调用
6.4.3 数组的空引用问题
6.5 局部变量
6.5.1 局部变量的作用域
6.5.2 局部变量的初始化
6.6 变长参数
6.7 this对象引用
6.8 系统常用类
6.8.1 Date类
6.8.2 GregorianCalendar类
6.8.3 常用系统已有类
6.9 小结
第7章 Java中的访问控制符
7.1 类的访问控制
7.1.1 public级别
7.1.2 默认访问级别
7.2 成员的访问控制
7.2.1 公共访问
7.2.2 保护访问
7.2.3 默认访问
7.2.4 私有访问
7.2.5 访问级别与数据封装
7.3 static关键字
7.3.1 静态成员变量
7.3.2 静态最终成员变量
7.3.3 static方法
7.3.4 static代码块
7.4 final的变量
7.4.1 final成员变量
7.4.2 final局部变量
7.5 package的使用
7.5.1 package的声明与创建
7.5.2 引入package资源
7.5.3 静态引入package
7.6 小结
第8章 父与子的继承
8.1 什么是继承
8.1.1 类和类的关系
8.1.2 继承性
8.1.3 类的继承
8.2 继承与隐藏
8.2.1 成员变量的继承
8.2.2 成员变量的隐藏
8.3 对象
8.3.1 对象引用类型
8.3.2 强制类型转换
8.3.3 对象调用成员
8.3.4 对象赋值和比较
8.4 方法的继承
8.5 方法的重写
8.5.1 重写的条件
8.5.2 返回类型的规则
8.5.3 访问级别
8.6 重写与继承的关系
8.6.1 静态方法没有重写
8.6.2 重写扩展父类功能
8.6.3 替代性
8.7 方法的重载
8.7.1 重载的规则
8.7.2 重载方法的匹配
8.7.3 重写与重载
8.8 final与继承
8.8.1 最终的类
8.8.2 最终的方法
8.9 abstract与继承
8.9.1 抽象类
8.9.2 抽象方法
8.10 继承的多态
8.11 小结
第9章 接口的世界
9.1 接口的概述
9.2 接口中的成员变量
9.3 接口中的方法
9.4 接口引用的使用
9.4.1 可以指向的对象类型
9.4.2 接口引用间的赋值
9.4.3 类引用与接口引用间的赋值
9.4.4 接口中方法无法使用的修饰符
9.5 接口与抽象类
9.6 接口的多态
9.7 接口回调
9.8 instanceof的使用
9.8.1 基本语法使用
9.8.2 不允许进行测试的情况
9.9 小结
第10章 构造器应用
10.1 构造器的概念
10.2 访问限制修饰符与构造器
10.2.1 公有类型构造器
10.2.2 默认与保护类型构造器
10.2.3 私有类型构造器以及静态工厂方法
10.3 构造器与返回类型
10.4 创建对象
10.5 重载构造器
10.6 级联调用的构造器
10.6.1 如何调用构造器
10.6.2 级联调用
10.6.3 默认构造器
10.7 自定义构造器
10.8 构造器不能继承
10.9 调用兄弟构造器
10.9.1 调用语法
10.9.2 注意事项
10.10 单列模式
10.11 程序的加载
10.12 小结
第11章 迷惑的封装类
11.1 封装类是什么
11.2 字符串与基本数据类型值的转换
11.3 封装类与基本数据类型的转换
11.4 字符串与封装类的转换
11.5 其他常用方法
11.5.1 静态工厂方法
11.5.2 isNaN()方法
11.5.3 equals()方法
11.5.4 toString()方法
11.5.5 进制转换方法
11.6 自动打包/解包
11.7 特殊数值计算
11.7.1 计算特大整数
11.7.2 精确计算浮点型
11.8 小结
第12章 如何处理异常
12.1 异常处理 252
12.1.1 捕获异常的try和catch
12.1.2 finally语句
12.1.3 try、catch和finally语句
12.2 捕获异常
12.3 未捕获异常
12.4 再次抛出异常
12.4.1 异常的再抛出
12.4.2 显性再抛出
12.4.3 隐性再抛出
12.5 方法重写对抛出异常的限制
12.6 自定义异常
12.6.1 自己创建异常类
12.6.2 使用自定义异常
12.6.3 显性再抛出异常的作用
12.7 异常的匹配
12.8 断言
12.8.1 为什么要引入断言
12.8.2 断言的语法规则
12.8.3 断言与编译
12.8.4 启动断言执行代码
12.8.5 防止滥用断言
12.9 小结 283
第3篇 Java常用技术
第13章 字符串应用
13.1 String类
13.2 String对象的内存机制
13.3 String内存机制的优势
13.4 String对象特殊机制的劣势
13.5 StringBuffer类
13.5.1 StringBuffer类的优势
13.5.2 编写方法链
13.5.3 StringBuffer类的重要方法
13.6 StringBuilder类
13.7 正则表达式
13.7.1 正则表达式的语法
13.7.2 Pattern与Matcher类的综合实例
13.8 在String类中使用正则表达式
13.8.1 匹配检查
13.8.2 查找替换
13.8.3 对字符串进行分析
13.9 小结
第14章 集合的使用
14.1 集合框架的结构
14.2 Object类
14.2.1 toString方法的重写
14.2.2 equals方法
14.2.3 hashCode方法
14.3 equals与hashCode方法的重写
14.4 Ordered与Sorted的接口
14.5 列表
14.5.1 List接口
14.5.2 数组实现列表
14.6 向量
14.7 链接实现列表
14.7.1 依赖性倒置原理
14.7.2 将数组转换为列表
14.8 集合
14.8.1 Set接口
14.8.2 HashSet类
14.8.3 equals与hashCode方法重写的作用
14.8.4 LinkedHashSet类的使用
14.9 SortedSet接口与TreeSet类
14.10 自定义Sorted集合的类
14.10.1 定制SortedSet的排序规则
14.10.2 集合的遍历
14.10.3 使用for-each循环遍历集合
14.11 映射
14.11.1 Map接口
14.11.2 HashMap类
14.11.3 Hashtable类
14.11.4 LinkedHashMap类
14.12 SortedMap接口与TreeMap类
14.13 映射的遍历实例
14.14 栈的实现
14.14.1 Stack类
14.14.2 Deque接口
14.14.3 栈计算数学表达式
14.15 集合元素的常用操作
14.16 小结
第15章 内部类应用
15.1 非静态内部类
15.2 在外部类中创建内部类
15.3 在外部类外创建内部类
15.4 内部类与外部类之间的成员互访
15.4.1 在内部类中访问外部类的成员
15.4.2 在外部类中访问内部类的成员
15.5 预定义对象引用this
15.6 局部内部类
15.6.1 定义局部内部类及创建
15.6.2 局部变量与局部内部类
15.6.3 静态方法中的局部内部类
15.7 静态内部类
15.8 静态/非静态内部类的区别
15.9 匿名内部类
15.10 内部类的理解
15.11 内部接口
15.12 小结
第16章 多线程的功力
16.1 线程的概念
16.2 自定义线程
16.2.1 继承Thread类
16.2.2 实现Runnable接口
16.2.3 两种方式的比较
16.3 创建线程对象
16.3.1 继承Thread类方式
16.3.2 实现Runnable接口方式
16.4 启动线程
16.5 同时使用多个线程
16.6 线程的状态
16.7 线程的使用
16.7.1 睡眠使用
16.7.2 线程的优先级
16.7.3 线程的让步
16.7.4 守护线程
16.8 同步线程
16.8.1 使用同步
16.8.2 同步调度方法
16.9 “生产者—消费者”案例
16.10 notify方法
16.11 同步语句块
16.12 线程的死锁
16.13 注意事项
16.14 获取运行线程
16.15 volatile关键字
16.16 小结
第17章 高级线程
17.1 线程池
17.2 固定尺寸线程池
17.2.1 自定义尺寸固定线程池实例
17.2.2 单任务线程池实例
17.2.3 可变尺寸线程池实例
17.2.4 延迟线程池的实例
17.3 使用自定义线程池
17.4 有返回值的线程调用
17.4.1 Callable接口
17.4.2 Future接口
17.4.3 Callable与Future接口的使用实例
17.5 封锁资源
17.5.1 Lock接口与ReentrantLock类
17.5.2 ReentrantLock锁使用实例
17.5.3 ReadWriteLock接口与ReentrantReadWriteLock类
17.5.4 ReentrantReadWriteLock读/写锁使用实例
17.6 信号量
17.6.1 Semaphore类
17.6.2 Semaphore类使用实例
17.7 队列
17.8 阻塞栈
17.8.1 BlockingDeque接口与LinkedBlockingDeque类
17.8.2 LinkedBlockingDeque类的使用实例
17.9 线程安全的单变量操作
17.9.1 atomic包
17.9.2 atomic包中类的使用实例
17.10 障碍器
17.10.1 CyclicBarrier类
17.10.2 CyclicBarrier类的使用实例
17.11 小结
第18章 内存管理技术
18.1 程序中的“垃圾”是什么
18.2 “垃圾”收集器
18.3 如何收集“垃圾”
18.3.1 finalize重写
18.3.2 finalize安全问题
18.4 最终守护者实例
18.5 非线程“垃圾”
18.6 线程“垃圾”
18.7 三种特殊的引用
18.7.1 弱引用实例
18.7.2 软引用实例
18.7.3 幻影引用实例
18.8 小结
第19章 数据结构和算法
19.1 栈和队列
19.1.1 栈的应用
19.1.2 队列的应用
19.2 三种排序
19.2.1 冒泡排序
19.2.2 选择排序
19.2.3 插入排序
19.3 小结 501
第4篇 界面编程
第20章 Swing编程
20.1 Swing是什么
20.2 第一个Swing小程序
20.3 JFrame类
20.4 事件处理
20.4.1 事件处理模型
20.4.2 事件层次结构
20.5 窗体事件
20.6 事件适配器
20.7 容器
20.8 JPanel类
20.9 JLabel类
20.10 JButton类
20.11 监听器与事件源对应关系的研究
20.12 小结
第21章 布局流行设计
21.1 布局管理器概述
21.2 常用布局管理器
21.3 FlowLayout流布局的使用
21.3.1 流布局简介
20.3.2 流布局使用实例
21.4 GridLayout网格布局
21.4.1 网格布局简介
21.4.2 网格布局使用实例
21.5 BorderLayout边框布局
21.5.1 边框布局简介
21.5.2 边框布局使用实例
21.6 空布局
21.6.1 空布局简介
21.6.2 空布局使用实例
21.7 CardLayout卡片布局
21.7.1 卡片布局简介
21.7.2 卡片布局使用实例
21.8 BoxLayout箱式布局
21.8.1 箱式布局简介
21.8.2 Box容器简介
21.8.3 Box容器与BoxLayout布局管理器使用实例
21.9 弹簧布局
21.9.1 弹簧布局简介
21.9.2 控件与容器边框之间使用支架
21.9.3 控件与容器边框之间使用弹簧
21.10 SpringLayout类
21.11 SpringLayout.Constraints内部类
21.12 Spring类
21.13 弹簧布局使用实例
21.14 弹簧布局描述法使用实例
21.15 小结
第22章 各种Swing控件
22.1 控件类
22.2 文本框与密码框的使用实例
22.3 文本区使用实例
22.4 开关按钮使用实例
22.5 单选按钮与复选框
22.5.1 JRadioButton类
22.5.2 ButtonGroup类
22.5.3 JCheckBox类
22.6 ItemEvent事件
22.7 ItemEvent事件实例
22.8 单选按钮与复选框的
综合实例
22.9 小结
第23章 菜单、工具栏和对话框的使用
23.1 菜单
23.2 JMenuBar类
23.2.1 使用窗体提供的setJMenuBar方法
23.2.2 使用传统的add()方法
23.3 JMenuItem类
23.3.1 为菜单项添加助记符
23.3.2 为菜单项设置快捷键
23.4 JMenu类
23.5 JRadioButtonMenuItem类
23.6 JCheckBoxMenuItem类
23.7 菜单使用实例
23.8 弹出式菜单实例
23.9 鼠标事件使用实例
23.10 工具栏的开发使用实例
23.11 对话框使用实例
23.11.1 JDialog类简介
23.11.2 JOptionPane类简介
23.11.3 JOptionPane对话框使用实例
23.12 文件选择器
23.13 颜色选择器
23.14 文件、颜色对话框使用实例
23.15 小结
第24章 经典的树状列表
24.1 树的专有名词
24.2 JTree类
24.3 树模型
24.4 树的节点
24.5 树的路径
24.6 树的相关事件
24.6.1 TreeSelectionEvent事件
24.6.2 TreeExpansionEvent事件
24.6.3 TreeModelEvent事件
24.7 树节点的绘制
24.7.1 TreeCellRenderer接口
24.7.2 DefaultTreeCellRenderer类
24.7.3 自定义绘制器实例
24.8 树状列表的综合实例
24.8.1 实例概述
24.8.2 搭建界面
24.8.3 信息提示功能
24.8.4 节点增删功能
24.8.5 图标更改功能
24.9 小结
第25章 表格制造
25.1 表格简介
25.2 JTable类
25.2.1 使用JTable的简单实例
25.2.2 表格的数据模型
25.2.3 表格模型的使用实例
25.3 表格列
25.3.1 TableColumnModel接口
25.3.2 DefaultTableColumnModel类
25.4 表格的相关事件
25.4.1 TableColumnModelEvent事件
25.4.2 TableModelEvent事件
25.4.3 ListSelectionEvent事件简介
25.4.4 表格事件使用实例
25.5 表格绘制器
25.5.1 TableCellRenderer接口
25.5.2 DefaultTableCellRenderer类简介
25.5.3 自定义表格绘制器
25.6 表格编辑器
25.6.1 TableCellEditor接口
25.6.2 AbstractCellEditor类
25.6.3 DefaultCellEditor类
25.6.4 为特定的类型指定编辑器
25.7 自定义表格编辑器与绘制器的使用实例
25.7.1 实例概述
25.7.2 界面框架的搭建
25.7.3 自定义表格以及表格控件的添加
25.7.4 自定义绘制器
25.7.5 自定义编辑器的添加
25.8 表格中的排序
25.8.1 RowSorter类
25.8.2 DefaultRowSorter类
25.8.3 TableRowSorter类简介
25.9 表格中的过滤
25.10 表格排序与过滤的使用实例
25.10.1 实例概述
25.10.2 搭建界面框架
25.10.3 添加表格
25.10.4 添加排序器
25.10.5 添加设置过滤条件的控件
25.10.6 表格设置过滤器
25.11 小结
第26章 图形绘制与动画
26.1 绘制简单图形
26.1.1 可以充当画布的控件
26.1.2 绘图的paint方法
26.2 画笔
26.2.2 坐标系统
26.3 调配颜色
26.4 图形绘制的使用实例
26.5 绘制文本
26.5.1 drawString方法
26.5.2 控制字体
26.5.3 文本绘制使用实例
26.6 Java 2D
26.7 线条的粗细控制
26.8 渐变颜色
26.9 图形变换
26.10 异或模式绘图
26.11 抗锯齿
26.12 动画
26.12.1 编写动画的原理
26.12.2 重新绘制
26.13 Timer类
26.14 简单动画使用实例
26.15 小结
第27章 处理图像
27.1 加载与绘制
27.2 图标
27.2.1 Icon接口
27.2.2 ImageIcon类
27.3 处理图像编码
27.3.1 JPEG编码器
27.3.2 GifEncoder编码器
27.4 图像抓取
27.4.1 createScreenCapture方法
27.4.2 抓屏功能使用实例
27.5 图像滤镜的开发
27.6 图像灰度处理使用实例
27.7 RGB色彩通道过滤
27.8 RGB色彩通道过滤使用实例
27.9 卷积滤镜
27.10 卷积滤镜使用实例
27.11 小结
第5篇 高级技术
第28章 网络编程的世界
28.1 网络编程简介
28.2 网络传输协议
28.3 Internet地址(InetAddress类)
28.3.1 创建InetAddress对象的方法
28.3.2 InetAddress的其他方法
28.4 Socket(套接字)
28.5 Socket使用实例
28.5.1 客户端
28.5.2 服务器端
28.5.3 程序运行结果
28.6 UDP协议网络通信(Datagram)
28.7 面向无连接的使用实例
28.7.1 发送端程序示例
28.7.2 接收端程序示例
28.7.3 程序运行结果
28.8 URL的网络编程
28.8.1 URL类与URL的解析
28.8.2 URLConnection类
28.8.3 获取远程图像
28.8.4 获取远程文档
28.8.5 获取远程音频
28.9 小结
第29章 你来我往的I/O流
29.1 流的简介
29.2 文件File
29.2.1 文件或目录的生成
29.2.2 文件名的处理
29.2.3 文件属性测试
29.2.4 普通文件信息和工具
29.2.5 目录操作
29.3 File类使用实例
29.4 RandomAccessFile类
29.4.1 构造方法
29.4.2 文件指针的操作
29.5 RandomAccessFile使用实例
29.6 字节流InputStream、OutputStream
29.6.1 输入、输出流
29.6.2 文件输入、输出流
29.6.3 缓冲输入、输出流
29.6.4 数据输入、输出流
29.6.5 对象输入、输出流
29.7 字符流Reader、Writer
29.7.1 字符读、写流
29.7.2 输入、输出流
29.7.3 文件读、写字符流
29.7.4 字符缓冲区读、写流
29.8 小结
第30章 JDBC数据库应用技术
30.1 数据库应用架构模型
30.1.1 两层结构模型
30.1.2 三层结构模型
30.2 JDBC的层次结构
30.3 JDBC编程入门
30.3.1 数据库的创建
30.3.2 JDBC-ODBC连接桥
30.3.3 加载JDBC驱动
30.4 建立数据库连接
30.5 SQL命令
30.6 结果集
30.7 连接数据库使用实例
30.8 预编译
30.9 访问其他数据库
30.9.1 MySQL数据库的访问
30.9.2 Oracle数据库的访问
30.10 事务
30.10.1 编写事务
30.10.2 批处理
30.11 可滚动结果集
30.12 可滚动与不可滚动结果集的比较
30.13 控制游标移动
30.14 元数据
30.15 数据库综合实例
30.16 小结