内容简介
第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 安装JDK
1.2.2 在Windows 7配置Java环境
1.2.3 在Windows 10配置Java环境
1.2.4 充分利用Java API文档
1.3 第一个Java程序
1.3.1 编写第一个Java代码
实例1-1:第一个Java程序代码
1.3.2 编译Java程序
1.3.3 运行Java代码
1.3.4 Java 11新特性:新的程序运行方式
第2章 使用IDE开发工具
2.1 使用Eclipse
2.1.1 IDE介绍
2.1.2 下载并安装Eclipse
2.1.3 新建一个Eclipse项目
2.1.4 编译并运行Eclipse项目
2.1.5 使用Eclipse打开一个Java工程——打开下载包中的项目
2.2 使用Intellij IDEA
2.2.1 搭建IntelliJ IDEA开发环境
2.2.2 使用IntelliJ IDEA新建Java工程
2.2.3 使用IntelliJ IDEA运行Java程序
第3章 Java基础语法
3.1 关键字、标识符和注释
3.1.1 关键字
3.1.2 标识符
3.1.3 注释
3.2 变量和常量
3.2.1 常量
实例3-1:定义几个Java常量
3.2.2 变量
实例3-2:计算三角形、正方形和长方形的面积
实例3-3:输出各种变量的值
3.3 数据类型
3.3.1 为什么引入数据类型
3.3.2 基本数据类型的取值范围
3.3.3 字符型
实例3-4:输出三种特殊符号
3.3.4 整型
实例3-5:通过整型类型计算图形周长和面积
3.3.5 浮点型
实例3-6:计算圆的面积
3.3.6 布尔型
实例3-7:比较两个数的大小
3.4 运算符
3.4.1 算术运算符
实例3-8:基本的数学运算(加、减、乘、除)
实例3-9:使用“%”运算符
实例3-10:使用递增与递减运算符
3.4.2 关系运算符和逻辑运算符
实例3-11:使用关系运算符比较数字和字符
3.4.3 位运算符
实例3-12:对两个整数实现位运算
3.4.4 条件运算符
实例3-13:使用条件运算符判断成绩是否优秀
3.4.5 赋值运算符
实例3-14:赋值类型不匹配的错误
3.4.6 运算符的优先级
实例3-15:四则混合运算
3.5 类型转换
3.5.1 自动类型转换
实例3-16:将整数自动转换为float类型
3.5.2 强制转换
实例3-17:实现int、byte和double类型之间的强制转换
第4章 使用条件语句
4.1 使用if语句
4.1.1 if语句介绍
实例4-1:判断成绩是否及格
4.1.2 if语句的延伸
实例4-2:对两种条件给出不同的答案
4.1.3 多个条件判断的if语句
实例4-3:模拟抽奖系统
4.2 使用switch语句
4.2.1 switch语句基础
实例4-4:判断数字的大小
4.2.2 没有break时的情形
实例4.5:执行switch后面的所有分支条件语句
4.2.3 case没有执行语句
实例4-6:在case语句后没有执行的代码
4.2.4 default可以不在末尾
实例4-7:将default放在第一个case分支中
第5章 使用循环语句
5.1 使用for循环语句
5.1.1 for循环介绍
实例5-1:输出整数0到9
5.1.2 嵌套使用for循环
实例5-2:使用嵌套for语句显示人民币符号和美元符号
实例5-3:在屏幕中输出一个用“*”摆放的菱形
5.2 使用while循环语句
5.2.1 while循环基础
实例5-4:循环输出18个数字
实例5-5:输出能够整除7的数字
5.2.2 do-while循环语句
实例5-6:使用do-while语句输出0到7
实例5-7:计算1+2+3+…+100的和
5.3 使用跳转语句
5.3.1 break语句
实例5-8:使用break终止循环的执行
实例5-9:在while循环语句中使用break
实例5-10:使用有标号的break语句
5.3.2 使用return语句
实例5-11:使用return语句结束循环的执行
5.3.3 使用continue跳转语句
实例5-12:使用continue改变for循环的运行结果
第6章 操作字符串
6.1 Java字符串的初始化
实例6-1:实现Java字符串的初始化
6.2 使用String类操作字符串
6.2.1 获取指定索引位置的字符
实例6-2:返回某个字符串指定索引的字符
6.2.2 追加字符串
实例6-3:在字符串后面追加字符串(好好+学习)
6.2.3 连接多个字符串
实例6-4:使用“+”连接两个对象
6.2.4 比较字符串
实例6-5:判断两个指定的字符串是否相等
6.2.5 获得字符串长度
实例6-6:获取字符串的长度
6.2.6 替换字符串
实例6-7:替换字符串中的某一个文字
6.2.7 截取字符串
实例6-8:截取一个字符串,并输出截取后的结果
6.2.8 字符串的大小写互转
实例6-9:对指定的字符串实现大小写转换
6.2.9 消除字符串中的空白字符
实例6-10:去掉字符串开头的空白字符
6.2.10 查找字符串
实例6-11:查找字符串str中空字符的位置
6.3 使用类StringBuffer
实例6-12:使用追加字符函数
第7章 使用数组
7.1 最简单的一维数组
7.1.1 声明一维数组
7.1.2 创建一维数组
实例7-1:创建并输出一维数组中的数据
7.1.3 初始化一维数组
实例7-2:初始化一维数组,并将数组值输出打印
7.2 二维数组
7.2.1 声明二维数组
7.2.2 创建二维数组
实例7-3:创建二维数组并输出打印里面的数据
7.2.3 初始化二维数组
实例7-4:打印输出二维数组中的数据
7.3 三维数组
7.3.1 声明三维数组
7.3.2 初始化三维数组
实例7-5:创建三维数组,然后输出打印数组内元素
7.4 操作数组
7.4.1 复制数组
实例7-6:复制一维数组中的元素
7.4.2 比较数组
实例7-7:比较两个一维数组
7.4.3 搜索数组中的元素
实例7-8:使用binarySearch()搜索数组内元素
7.4.4 排序数组
实例7-9:使用sort()排序数组内元素
7.4.5 填充数组
实例7-10:使用fill()向数组中添加新的元素
7.5 数组的高级用法
7.5.1 动态数组
实例7-11:将ArrayList作为Java动态数组
7.5.2 使用foreach循环
实例7-12:使用foreach遍历输出数组中的元素
7.5.3 数组和内存
实例7-13:初始化基本类型数组
第8章 类和方法
8.1 面向对象基础
8.1.1 面向对象介绍
8.1.2 Java的面向对象编程
8.1.3 Java面向对象的几个核心概念
8.2 类
8.2.1 定义类
8.2.2 定义属性
8.2.3 定义方法
8.2.4 定义构造器
8.3 修饰符
8.3.1 public修饰符
实例8-1:输出显示歼20的飞行里程
8.3.2 使用private修饰修饰符
实例8-2:使用private修饰符输出姓名和学号
8.3.3 使用protected保护修饰符
实例8-3:输出显示歼20列装和形成战力的年份
8.3.4 其他修饰符
实例8-4:使用默认修饰符创建属性和方法
8.4 使用方法
8.4.1 方法的所属性
8.4.2 传递方法参数
实例8-5:传递方法的参数
8.4.3 长度可变的方法
实例8-6:定义一个形参长度可变的方法
8.4.4 构造方法
实例8-7:在类中创建一个构造方法
8.4.5 递归方法
实例8-8:使用递归计算f(10)的值
8.5 使用this关键字
实例8-9:使用this引用全局变量
8.6 使用类和对象
8.6.1 创建和使用对象
实例8-10:在类中创建和使用对象
8.6.2 使用静态变量和静态方法
实例8-11:输出显示飞机的当前坐标
8.7 抽象类和抽象方法
8.7.1 抽象类和抽象方法基础
实例8-12:收获苹果和桔子
8.7.2 抽象类必须有一个抽象方法
实例8-13:展示汽车的油量变化
8.7.3 抽象类的作用
实例8-14:父类把一个或多个方法留给其子类实现
8.8 软件包
8.8.1 定义软件包
8.8.2 在Eclipse定义软件包
8.8.3 在程序里插入软件包
实例8-15:在类中插入一些特定的包
第9章 继承、重载、接口和构造器
9.1 类的继承
9.1.1 父类和子类
实例9-1:使用类的继承
9.1.2 调用父类的构造方法
实例9-2:输出品类为商业大佬自传的图书信息
9.1.3 访问父类的属性和方法
实例9-3:使用子类访问父类的属性
9.1.4 多重继承
实例9-4:实现3个类的多重继承
9.1.5 重写父类方法
实例9-5:过滤掉父类中的方法
9.2 重写和重载
9.2.1 重写
实例9-6:一个没有具体意义方法重写
实例9-7:输出显示××集团的信息
9.2.2 重载
实例9-8:显示继承人的信息
9.2.3 联合使用重写与重载
实例9-9:××集团的财产继承分配方案
9.3 隐藏和封装
9.3.1 Java中的封装
9.3.2 使用访问控制符
实例9-10:使用访问控制符改变程序的执行效果
9.4 接口
9.4.1 定义接口
9.4.2 接口中的量和方法
实例9-11:在接口中使用常量
实例9-12:在接口中使用方法
9.4.3 实现接口
实例9-13:通过接口实现数学运算
9.4.4 引用接口
实例9-14:引用接口计算数学题
9.4.5 接口的继承
实例9-15:实现三个接口之间的继承
第10章 多态、包装类、内部类和枚举类
10.1 多态
10.1.1 何谓多态
10.1.2 演示Java中的多态
实例10-1:认识第一个多态程序
10.2 引用类型
10.2.1 四种引用类型
实例10-2:使用引用类型回收资源
10.2.2 使用instanceof运算符
实例10-3:某某的出场费最高吗
10.2.3 引用变量的强制类型转换
实例10-4:实现Object类型和String类型之间的强制转换
10.3 组合
实例10-5:实现代码复用
10.4 初始化块
10.4.1 何谓初始化块
实例10-6:老同学之间的对话
10.4.2 静态初始化块
实例10-7:优先执行静态初始化块
10.5 使用final修饰符
10.5.1 用final修饰变量
实例10-8:使用final修饰成员变量
10.5.2 使用final方法
实例10-9:在子类中设置不重写父类中的某个方法
10.5.3 使用final类
实例10-10:设置一个不允许被任何类继承的类
10.6 内部类
10.6.1 何谓内部类
10.6.2 非静态内部类
实例10-11:设置衣服的颜色和具体位置
10.6.3 成员内部类
实例10-12:在外部类或外部类的非静态方法中实现内部类对象实例
10.6.4 局部内部类
实例10-13:使用局部内部类访问当前代码块内的常量
10.7 枚举类
10.7.1 枚举类的方法
10.7.2 手动实现枚举类
实例10-14:输出显示“秋天是一个天高云淡的季节”
10.7.3 枚举类型
实例10-15:使用枚举类型显示当前的季节
第11章 集合
11.1 Java集合概述
11.2 Collection接口和Iterator接口
11.2.1 基础知识介绍
11.2.2 使用Collection接口和Iterator接口
实例11-1:使用Collection方法操作集合中的元素
11.3 Set接口
11.3.1 基础知识介绍
11.3.2 使用HashSet
实例11-2:使用HashSet判断集合元素相同的标准
11.3.3 使用TreeSet类
实例11-3:添加、删除TreeSet中的数据
实例11-4:演示TreeSet的自然排序用法
11.3.4 使用EnumSet类
实例11-5:使用EnumSet保存枚举类中的值
11.4 List接口
11.4.1 List接口介绍
11.4.2 使用List接口和ListIterator接口
实例11-6:使用List根据索引来操作集合内元素
11.4.3 使用ArrayList和Vector类
实例11-7:将Vector作为“栈”功能来使用
11.5 Map接口
11.5.1 基本知识介绍
11.5.2 使用HashMap和Hashtable实现类
实例11-8:将null作为HashMap的key值和value值
实例11-9:使用Hashtable判断两个value是否相等
11.5.3 使用SortedMap接口和TreeMap实现类
实例11-10:使用TreeMap实现自然排序
11.5.4 使用类IdentityHashMap
实例11-11:使用类IdentityHashMap添加数据
11.5.5 使用类EnumMap
实例11-12:使用类EnumMap添加数据
11.6 模拟队列数据结构的Queue接口
11.6.1 使用类LinkedList
实例11-13:使用类LinkedList操作列表中的数据
11.6.2 处理优先级的类PriorityQueue
实例11-14:找出队列中的最小值
11.7 集合工具类Collections
11.7.1 排序操作
实例11-15:使用Collections操作List集合
11.7.2 查找和替换操作
实例11-16:使用Collections查找集合中的元素
11.8 其他集合类
11.8.1 Stack类
实例11-17:实现入栈和出栈操作
11.8.2 属性类Properties
第12章 常用的内置类库
12.1 使用StringBuffer类
12.1.1 StringBuffer类基础
12.1.2 通过append连接各种类型的数据
实例12-1:将“我爱,学习,Java,1个月了”等数据连接起来
12.1.3 在任意位置为StringBuffer添加内容
实例12-2:在“Java”前后分别添加“我学习”和“3个月”了
12.1.4 替换StringBuffer的内容
实例12-3:将“Hello World”中的“World”替换为“AAA”
12.1.5 从StringBuffer中删除指定范围的字符串
实例12-4:将“Hello AAA”中的“AAA”删除
12.2 使用Runtime类
12.2.1 Runtime类介绍
12.2.2 得到JVM的内存空间信息
实例12-5:查看JVM的空间情况
12.2.3 联合使用Runtime类与Process类
实例12-6:调用本机可执行程序(记事本)
12.3 实现程序国际化
12.3.1 国际化基础
12.3.2 使用Locale类
12.3.3 使用ResourceBundle类
实例12-7:通过ResourceBundle取得资源文件中的内容
12.3.4 处理动态文本
实例12-8:使用MessageFormat格式化动态文本
12.3.5 使用类代替资源文件
实例12-9:使用类设置资源文件的信息
12.4 使用System类
12.4.1 System类基础
实例12-10:计算一个程序的执行时间
12.4.2 通过System类获取本机的全部环境属性
实例12-11:获取本机的全部环境属性
12.4.3 垃圾对象的回收
实例12-12:释放观察对象
12.5 使用Date类
12.5.1 使用Date类
实例12-13:得到当前系统日期
12.5.2 使用Calendar类
实例12-14:获取系统的当前日期
12.5.3 使用DateFormat类
实例12-15:演示DateFormat中的默认操作
12.5.4 使用SimpleDateFormat类
实例12-16:格式化显示日期
12.6 几个核心类
12.6.1 使用Math类
实例12-17:使用类Math实现基本数学运算
12.6.2 使用Random类
实例12-18:生成10个不大于100的随机数字
12.6.3 使用NumberFormat类
实例12-19:格式化显示数字
12.6.4 使用BigInteger类
实例12-20:使用类BigInteger实现数学运算
12.6.5 BigDecimal类
实例12-21:实现四舍五入四则运算
第13章 使用泛型
13.1 泛型基础
13.1.1 泛型的好处
13.1.2 类型检查
实例13-1:输出显示BESTSELLER旗下的品牌
13.1.3 类型扩展
实例13-2:创建了一个只能存放String对象的StrList集合类
13.1.4 使用泛型
实例13-3:使用泛型改进程序
13.2 泛型类
13.2.1 定义泛型接口和类
实例13-4:在类中包含一个泛型声明
13.2.2 派生子类
13.2.3 并不存在泛型类
13.3 类型通配符
13.3.1 类型通配符基础
13.3.2 设置类型通配符的上限
实例13-5:绘制三个形状
13.3.3 设置类型形参的上限
13.4 泛型方法
13.4.1 定义泛型方法
实例13-6:演示泛型方法的完整用法
13.4.2 设置通配符下限
13.5 泛型接口
实例13-7:创建并使用泛型接口
第14章 异常处理
14.1 什么是异常
14.1.1 认识异常
14.1.2 Java提供的异常处理类
14.2 异常处理方式
14.2.1 使用try...catch处理异常
实例14-1:分母不能为零
14.2.2 处理多个异常
实例14-2:同时处理三种类型的异常
14.2.3 在异常中使用finally关键字
实例14-3:使用finally关键字输出异常信息
14.2.4 总是被执行的finally代码块
实例14-4:输出显示finally代码块中的内容
14.2.5 访问异常信息
实例14-5:演示程序如何访问异常信息
14.3 抛出异常
14.3.1 使用throws抛出异常
实例14-6:使用关键字throws处理多种异常
14.3.2 使用throw抛出异常
实例14-7:使用关键字throw将异常抛给上一级调用
14.4 自定义异常
14.4.1 Throwable类介绍
14.4.2 在Java程序中使用异常类
实例14-8:使用内置异常类处理多种异常
14.4.3 使用Throwable类自定义异常
实例14-9:编写自定义异常程序
第15章 文件处理
15.1 Java I/O基础
15.2 使用类File
15.2.1 File类中方法
15.2.2 使用File类创建文件
实例15-1:在H盘上创建一个名为“奔驰GLA.txt”的文件
15.2.3 使用File类删除文件
实例15-2:在H盘上删除名为“奔驰GLA.txt”的文件
15.2.4 使用类File创建文件夹
实例15-3:创建一个名为“奔驰Smart”文件夹
15.2.5 使用File类列出目录中的全部文件
实例15-4:使用list()方法列出一个目录中的全部内容
15.3 RandomAccessFile类
15.3.1 类RandomAccessFile的常用方法
15.3.2 使用类RandomAccessFile
实例15-5:向文件中写入数据
15.4 字节流与字符流
15.4.1 节流类和字符流类
15.4.2 使用字节输出流OutputStream
实例15-6:向文件中写入字符串
15.4.3 使用字节输入流InputStream
实例15-7:读取并显示文件中的内容
15.4.4 开辟指定大小的byte数组
实例15-8:根据文件的数据量来选择开辟空间的大小
实例15-9:使用方法read()读取内容
实例15-10:通过判断是否读到文件末尾的方式来读取文件
15.4.5 使用字符流类Writer写入文件内容
实例15-11:使用字符流Writer向文件中写入内容
15.4.6 使用类FileWriter追加文件的内容
实例15-12:向文件中追加指定的内容
15.5 使用类BufferedReader
15.5.1 类BufferedReader基础
实例15-13:使用方法readLine()读取用户输入的信息
15.5.2 使用BufferedReader类
实例15-14:输入两个数字,并让两个数字相加。
15.6 数据操作流
15.6.1 使用类DataOutputStream
实例15-15:将订单数据写入到文件order.txt中
15.6.2 DataInputStream类
实例15-16:读取文件order.txt中的订单信息
15.7 合并流
实例15-17:合并两个文件
15.8 压缩流
15.8.1 ZIP压缩输入/输出流简介
15.8.2 ZipOutputStream类
实例15-18:压缩指定的文件
实例15-19:压缩D盘中的文件夹www
15.8.3 类ZipFile
实例15-20:实例化ZipFile类对象
15.8.4 ZipInputStream类
实例15-21:取得www.zip中的一个ZipEntry
第16章 使用Annotation
16.1 Class类与Java反射
16.1.1 反射中的方法
16.1.2 访问构造方法
实例16-1:使用Constructor对象访问构造方法
16.1.3 访问成员变量
实例16-2:使用类Field访问成员变量
16.1.4 访问方法
实例16-3:使用类Method访问方法
16.2 使用Annotation注解
16.2.1 使用系统内置的Annotation
实例16-4:使用注解@Override
实例16-5:使用注解@Deprecated取消错误信息
实例16-6:使用@SuppressWarnings取消警告信息
16.2.2 自定义Annotation
实例16-7:访问自定义的Annotation
第17章 使用AWT开发GUI程序
17.1 AWT基础
17.2 容器
17.2.1 容器基础
17.2.2 使用容器中组件:Frame
实例17-1:使用Frame创建一个窗口
17.2.3 使用容器中组件:Panel
实例17-2:使用Panel作为容器盛装了一个文本框和一个按钮
17.2.4 使用容器中组件:ScrollPane
实例17-3:使用ScrollPane容器代替了本节前面的Panel容器
17.3 布局管理器
17.3.1 布局利器FlowLayout
实例17-4:使用FlowLayout布局
17.3.2 布局利器BorderLayout
实例17-5:使用BorderLayout布局
17.3.3 布局利器GridLayout
实例17-6:使用GridLayout布局
17.4 AWT的常用组件
17.4.1 AWT中的组件
实例17-7:使用AWT的基本组件进行各类操作
17.4.2 AWT中的对话框
实例17-8:使用模式对话框和非模式对话框
第18章 使用Swing开发GUI程序
18.1 Swing基础
18.2 Swing的组件
18.2.1 Swing组件的层次结构
18.2.2 Swing实现AWT组件
实例18-1:使用Swing组件创建窗口
18.2.3 Jframe、JscrollPane和边框
实例18-2:为Panel容器分别添加了几种边框
18.2.4 使用JToolBar创建工具条
实例18-3:实现“复制”和“粘贴”功能
18.2.5 使用JColorChooser和JFileChooser
实例18-4:实现一个颜色选择对话框效果
18.3 使用进度条组件
18.3.1 创建一个进度条
实例18-5:实现一个进度条效果
18.3.2 使用ProgressMonitor创建进度条对话框
实例18-6:使用SimulatedTarget模拟了一个耗时任务
第19章 使用JavaFX开发GUI程序
19.1 JavaFX介绍
19.1.1 JavaFX的特色
19.1.2 安装e(fx)clipse插件
19.1.3 认识第一个JavaFX程序
实例19-1:在JavaFX界面中输出打折信息
19.2 JavaFX开发基础
19.2.1 窗体结构
实例19-2:单击我提交订单
19.2.2 属性绑定
实例19-3:使用属性绑定功能
19.3 基本属性设置
19.3.1 使用Color类设置颜色
实例19-4:使用RGB方式设置颜色
实例19-5:使用Web方式设置颜色
19.3.2 使用Text类绘制文字
实例19-6:在窗体中绘制指定样式文本
19.4 使用Shape类绘制形状
19.4.1 使用Line绘制线条
实例19-7:使用Line绘制直线
19.4.2 使用Rectangle绘制矩形
实例19-8:绘制多个样式的矩形
19.5 使用面板实现界面布局
19.5.1 使用Pane的画布功能
实例19-9:在类javafx.scene.layout.Pane中绘制一个圆
19.5.2 使用StackPane实现特定面板功能
实例19-10:在面板中放置一个按钮
19.5.3 使用FlowPane实现序列放置
实例19-11:在面板中同时添加标签和文本
19.6 使用JavaFX UI组件
19.6.1 使用标签组件
实例19-12:使用标签组件创建有文本和图片的标签
19.6.2 使用按钮组件
实例19-13:使用按钮控制一段文本的左右移动
第20章 开发网络程序
20.1 Java中的网络包
20.1.1 InetAddress类详解
20.1.2 URLDecoder类和URLEncoder类详解
20.1.3 URL和URLConnection
20.1.4 实践演练
实例20-1:使用类InetAddress发送信息
实例20-2:图片下载系统
20.2 TCP编程
20.2.1 使用ServletSocket
20.2.2 使用Socket
实例20-3:创建一个TCP协议的服务器端
20.2.3 TCP中的多线程
实例20-4:开发一个聊天室程序
20.3 UDP编程
20.3.1 使用DatagramSocket
实例20-5:使用UDP开发一个聊天系统
20.3.2 使用MulticastSocket
实例20-6:实现一个基于广播的多网友用户聊天室
第21章 开发数据库程序
21.1 SQL语言基础
21.1.1 数据定义
21.1.2 数据操纵
21.2 JDBC基础
21.2.1 JDBC驱动类型
21.2.2 JDBC的常用接口和类
21.3 连接SQL Server数据库
21.3.1 下载并安装SQL Server 2016驱动
21.3.2 测试连接
实例21-1:连接SQL Server数据库
21.3.3 获取指定SQL Server数据库中的表
实例21-2:输出显示某个SQL Server数据库中包含的表
21.4 连接MySQL数据库
21.4.1 下载并配置MySQL驱动
21.4.2 将MySQL驱动加载到Eclipse
21.4.3 测试连接
实例21-3:输出显示连接MySQL数据库是否成功
第22章 开发多线程程序
22.1 线程基础
22.1.1 什么是线程
22.1.2 Java的线程模型
22.2 创建线程
22.2.1 使用Thread类创建线程
实例22-1:使用类Thread建立线程
实例22-2:设置线程名字(使用类Thread)
22.2.2 使用Runnable接口创建线程
实例22-3:设置线程名字
22.3 线程的生命周期
22.3.1 创建并运行线程
实例22-4:线程的创建、运行和停止三个状态之间的切换
22.3.2 挂起和唤醒线程
实例22-5:使用sleep()、suspend()和resume()
22.3.3 终止线程的三种方法
实例22-6:使用退出标志终止线程
22.3.4 线程阻塞
22.3.5 线程死亡
实例22-7:演示线程的死亡
22.4 控制线程
22.4.1 使用join方法
实例22-8:返回某个字符串指定索引的字符
22.4.2 使用volatile关键字
实例22-9:实现原子操作
第23章 航空订票管理系统
23.1 系统概述和总体设计
23.1.1 系统需求分析
23.1.2 系统demo流程
23.2 数据库设计
23.2.1 选择数据库
23.2.2 数据库结构的设计
23.3 系统框架设计
23.3.1 设计主界面
23.3.2 设计菜单
23.3.3 配置Hibernate访问类
23.3.4 系统登录模块设计
23.4 航班信息管理模块
23.4.1 添加飞机管理
23.4.2 添加航班管理信息
23.4.3 添加航班计划
23.5 网点管理模块
23.5.1 网点添加管理
23.5.2 删除网点管理
23.6 订票管理模块
23.6.1 网点登录管理
23.6.2 订票信息管理
23.7 系统测试