Java编程详解 微课版
作者: 季久峰,刘洪涛主编
出版时间:2019年版
内容简介
本书主要介绍了Java语言的编程技术。全书共15章,介绍了Java语言的由来、面向对象程序的初步设计、标识符、关键字、数据类型、运算符、表达式、流程控制、数组、面向对象编程进阶的知识、高级类的特性、Java基本类库、Java异常处理、Java泛型、集合、Java线程编程、Java I/O系统、网络编程及Android下的Java高效编程等。本书内容由浅入深,通俗易懂。每章都有课后练习题,帮助读者巩固所学知识。
目录
第 1章 Java语言的由来 1
1.1 什么是Java语言 2
1.2 Java语言的诞生 2
1.3 Java的发展经历 3
1.4 Java的现状 5
1.5 Java虚拟机 5
1.5.1 Java虚拟机的起源与构造 5
1.5.2 虚拟机的优化 6
1.5.3 现实生活中的虚拟机 7
1.6 Java开发环境搭建 7
1.6.1 安装JDK和配置Java开发环境 8
1.6.2 Eclipse的安装 8
1.7 本章小结 8
课后练习题 9
第 2章 面向对象程序初步设计 10
2.1 面向对象的概念 11
2.1.1 从结构化程序设计到面向对象程序设计 11
2.1.2 面向对象的特征 11
2.2 面向对象程序设计 12
2.2.1 知识准备:面向对象编程术语 12
2.2.2 知识准备:对象 12
2.2.3 知识准备:类 13
2.2.4 知识准备:类的声明 13
2.2.5 知识准备:属性的声明 15
2.2.6 知识准备:方法的声明 15
2.2.7 知识准备:构造器(构造方法) 16
2.2.8 知识准备:对象的创建和使用 17
2.2.9 任务一:创建并引用一个对象 17
2.2.10 技能拓展任务:带参数构造器的声明与使用 18
2.3 信息的封装和隐藏 19
2.3.1 知识准备:信息的封装 19
2.3.2 知识准备:信息的隐藏 19
2.4 Java源文件结构 20
2.4.1 知识准备:package语句 20
2.4.2 知识准备:import语句 22
2.4.3 任务二:package语句和import语句实例 22
2.5 JDK中常用的包 23
2.6 本章小结 24
课后练习题 24
第3章 标识符、关键字与数据类型 26
3.1 Java注释 27
3.1.1 知识准备:Java注释使用规则 27
3.1.2 知识准备:利用javadoc生成API文档 27
3.1.3 任务一:使用javadoc生成API文档 30
3.2 分隔符和标识符 31
3.2.1 知识准备:空白分隔符 31
3.2.2 知识准备:普通分隔符 32
3.2.3 知识准备:Java语言标识符的组成规则 32
3.2.4 任务二:综合使用Java分隔符和标识符 33
3.3 Java关键字/保留字 33
3.3.1 知识准备:Java关键字使用规范 33
3.3.2 知识准备:重点关键字解析 34
3.4 数据类型 34
3.4.1 知识准备:简单类型 34
3.4.2 知识准备:非布尔型简单数据类型之间的转换 37
3.4.3 任务三:简单数据类型转换实例 38
3.4.4 知识准备:引用类型 38
3.4.5 任务四:引用类型程序实例 39
3.4.6 技能拓展任务:分析对象的构造和初始化 40
3.5 变量及其初始化 41
3.5.1 知识准备:局部变量 41
3.5.2 知识准备:成员变量 42
3.5.3 知识准备:变量初始化 43
3.5.4 知识准备:局部变量的初始化 43
3.5.5 知识准备:成员变量的初始化 44
3.5.6 任务五:成员变量的3种初始化方式 44
3.6 值传递和引用传递 45
3.6.1 知识准备:Java中的值传递 45
3.6.2 知识准备:Java中的引用传递 46
3.7 Java编码规范 46
3.7.1 知识准备:命名规范 47
3.7.2 知识准备:代码编写格式规范 48
3.8 本章小结 48
课后练习题 48
第4章 运算符、表达式与流程控制 50
4.1 运算符 51
4.1.1 知识准备:算术运算符 51
4.1.2 知识准备:位运算符 52
4.1.3 知识准备:关系运算符和逻辑运算符 53
4.1.4 任务一:短路布尔运算 54
4.1.5 知识准备:三元运算符 56
4.1.6 知识准备:递增/递减运算符 56
4.1.7 知识准备:赋值运算符 56
4.1.8 任务二:简单数据类型和引用数据类型的赋值操作 58
4.1.9 知识准备:运算符的优先顺序 59
4.1.10 技能拓展任务:字符串连接运算符 60
4.2 表达式 61
4.2.1 知识准备:表达式中运算符的结合性 61
4.2.2 知识准备:表达式中运算符的优先顺序 61
4.3 分支语句 62
4.3.1 知识准备:if语句 62
4.3.2 任务三:if语句的用法 63
4.3.3 知识准备:switch语句 64
4.3.4 任务四:switch语句实例 64
4.4 循环语句 66
4.4.1 知识准备:for语句 66
4.4.2 任务五:for循环语句实例 67
4.4.3 知识准备:while语句 68
4.4.4 知识准备:do…while语句 69
4.4.5 知识准备:break及continue语句 69
4.4.6 技能拓展任务:continue结合标签的使用 71
4.5 本章小结 72
课后练习题 72
第5章 数组 74
5.1 数组的基本概念 75
5.2 一维数组 75
5.2.1 知识准备:一维数组的声明 75
5.2.2 知识准备:一维数组的创建 75
5.2.3 任务一:一维数组的声明与创建实例 76
5.2.4 知识准备:一维数组的初始化 76
5.2.5 知识准备:引用数组元素 79
5.2.6 任务二:引用数组实例——对数组排序 79
5.2.7 知识准备:简单数据类型数组的内存空间 80
5.2.8 技能拓展任务:数组复制 81
5.3 数据结构及数组应用 83
5.3.1 知识准备:堆栈 83
5.3.2 任务三:使用数组实现堆栈 83
5.3.3 知识准备:队列 85
5.3.4 任务四:使用数组实现队列 85
5.3.5 知识准备:排序算法 87
5.3.6 技能拓展任务:排序算法实例 90
5.4 多维数组 91
5.4.1 知识准备:多维数组的声明 91
5.4.2 知识准备:多维数组的创建 91
5.4.3 知识准备:多维数组的初始化 91
5.5 本章小结 92
课后练习题 92
第6章 面向对象编程进阶 94
6.1 继承 95
6.1.1 类的继承 95
6.1.2 任务一:利用继承实现通讯录实例 97
6.1.3 访问控制 99
6.2 super关键字 100
6.2.1 调用父类构造器 100
6.2.2 调用父类的属性和方法 101
6.2.3 任务二:super关键字的使用 101
6.3 this关键字 103
6.3.1 知识准备:使用this关键字获得当前对象的引用 103
6.3.2 知识准备:在构造器中调用构造器 104
6.3.3 知识准备:static的含义 105
6.4 方法的覆盖与重载 106
6.4.1 知识准备:方法的覆盖 106
6.4.2 知识准备:方法重载 108
6.4.3 知识准备:构造器重载 108
6.5 通常需要覆盖的几种方法 109
6.5.1 知识准备:对象的toString()方法 109
6.5.2 任务三:覆盖toString()方法 110
6.5.3 知识准备:==和equals() 111
6.6 对象的初始化 114
6.7 封装类 118
6.7.1 知识准备:Java中的封装类 118
6.7.2 知识准备:自动拆箱和装箱 119
6.7.3 知识拓展:在Java中实现小数的精确计算 121
6.8 本章小结 122
课后练习题 122
第7章 高级类特性 124
7.1 static关键字 125
7.1.1 static 125
7.1.2 static变量的引用方法 125
7.2 final关键字 126
7.2.1 final数据 126
7.2.2 final方法 126
7.2.3 final类 127
7.3 抽象类 127
7.3.1 abstract概述 127
7.3.2 abstract class 128
7.3.3 模板设计模式 128
7.4 接口 129
7.4.1 接口的定义 129
7.4.2 接口的使用 129
7.4.3 接口的扩展 129
7.4.4 抽象类和接口 130
7.5 多态 131
7.5.1 多态概述 131
7.5.2 instanceof概述 135
7.5.3 应用类型数据转换 136
7.6 内部类 137
7.6.1 内部类定义 137
7.6.2 局部内部类 137
7.6.3 匿名内部类 138
7.6.4 内部类的特性 139
7.7 修饰符的适用范围 139
7.7.1 类的适用范围 139
7.7.2 变量的适用范围 139
7.7.3 方法的适用范围 140
7.7.4 接口的适用范围 140
7.8 本章小结 140
课后练习题 141
第8章 Java基本类库 142
8.1 系统输入 143
8.1.1 运行Java程序的参数 143
8.1.2 使用Scanner获取键盘输入 143
8.2 Lang包下的类 144
8.2.1 System类 144
8.2.2 Runtime类 145
8.2.3 Object类 145
8.2.4 String类、StringBuffer类、StringBuilder类和Math类 146
8.3 日期时间类 149
8.3.1 Date类和Calendar类 149
8.3.2 TimeZone类 150
8.4 本章小结 151
课后练习题 151
第9章 Java异常处理 152
9.1 异常概述 153
9.1.1 异常的概念 153
9.1.2 Error/Exception层次关系 153
9.1.3 数学计算异常示例 153
9.1.4 访问空对象引起的异常示例 154
9.2 Java中异常的处理 155
9.2.1 常见异常 155
9.2.2 Java中的异常处理机制 155
9.2.3 通过try…catch…finally语句来处理异常 155
9.2.4 将异常抛出 158
9.2.5 捕获异常和抛出异常结合使用 161
9.2.6 进行方法覆盖时对异常的处理 161
9.3 自定义异常 162
9.3.1 知识准备:自定义异常概念 162
9.3.2 知识拓展:通过printStackTrace()追踪异常源头 163
9.4 本章小结 164
课后练习题 164
第 10章 Java泛型 166
10.1 泛型入门 167
10.2 泛型类 168
10.3 泛型方法 170
10.3.1 定义泛型方法 170
10.3.2 静态方法使用泛型 171
10.4 泛型接口 172
10.4.1 使用泛型接口 172
10.4.2 继承泛型接口 172
10.5 泛型的高级特性 173
10.5.1 泛型的通配符 173
10.5.2 泛型限定——上限 174
10.5.3 泛型限定——下限 175
10.6 本章小结 175
课后练习题 176
第 11章 集合 177
11.1 集合概述 178
11.2 集合的层次结构 178
11.3 Collection接口 179
11.3.1 Collection接口介绍 179
11.3.2 关于Collection接口的子接口与类 179
11.3.3 实现集合的增删改查 179
11.3.4 使用foreach循环进行遍历 180
11.3.5 使用iterator接口进行遍历 181
11.4 Set集合 183
11.4.1 HashSet类 183
11.4.2 TreeSet类 184
11.4.3 LinkedHashSet类 185
11.5 List集合 185
11.5.1 ArrayList类 186
11.5.2 LinkedList类 187
11.5.3 Vector类 188
11.5.4 Vector类与ArrayList类的区别 188
11.6 Map集合 188
11.6.1 HashMap类 189
11.6.2 Hashtable类 189
11.6.3 LinkedHashMap类 189
11.6.4 Map集合的遍历 190
11.7 本章小结 190
课后练习题 191
第 12章 Java线程编程 192
12.1 线程概述 193
12.2 Java线程模型 194
12.3 创建线程 194
12.3.1 知识准备:继承Thread类创建线程 194
12.3.2 知识准备:实现Runnable接口创建线程 195
12.3.3 知识准备:后台线程概念 196
12.3.4 任务一:继承Thread类创建线程实例 196
12.3.5 任务二:实现Runnable接口方式创建线程 197
12.3.6 技能拓展任务:实现守护线程实例 198
12.4 线程的运行机制 198
12.4.1 知识准备:线程的基本状态 198
12.4.2 知识准备:线程的结束方式 199
12.4.3 任务三:线程的基本状态实例 200
12.5 线程控制 201
12.5.1 知识准备:测试线程 201
12.5.2 知识准备:中断线程 201
12.5.3 知识准备:设置线程优先级 202
12.5.4 知识准备:Thread.join()线程等待 202
12.5.5 任务四:设置线程优先级实例 203
12.5.6 技能拓展任务:线程的join()方法实现实例 204
12.6 多线程编程 207
12.6.1 知识准备:多线程概述 207
12.6.2 知识准备:多线程共享数据 209
12.6.3 知识准备:线程间通信 214
12.6.4 知识准备:实现线程间通信 214
12.6.5 知识拓展:定时器 217
12.7 多线程编程的一般规则 218
12.8 java.util.concurrent中的同步API 219
12.8.1 知识准备:线程池 219
12.8.2 知识准备:锁 221
12.8.3 任务五:线程池实例 221
12.8.4 知识准备:使用锁实例 223
12.8.5 知识准备:使用读/写锁 228
12.8.6 技能拓展任务:使用Condition来实现线程间的通信 231
12.9 本章小结 233
课后练习题 234
第 13章 Java I/O系统 235
13.1 File类 236
13.1.1 目录列表类 236
13.1.2 目录实用工具 237
13.1.3 目录的检查及创建 237
13.2 输入和输出 238
13.2.1 InputStream类型 239
13.2.2 OutputStream类型 240
13.3 Reader和Writer 241
13.3.1 数据的来源和去处 241
13.3.2 更改流的行为 242
13.3.3 未发生变化的类 242
13.4 RandomAccessFile 243
13.5 I/O流的典型使用方式 243
13.5.1 缓冲输入文件 243
13.5.2 从内存中输入 244
13.5.3 格式化的内存输入 244
13.5.4 基本的文件输入 245
13.5.5 读/写随机访问文件 245
13.5.6 文件的复制 246
13.6 本章小结 248
课后练习题 248
第 14章 网络编程 250
14.1 网络基础 251
14.1.1 网络类型 251
14.1.2 网络工作模式 251
14.1.3 网络通信结构 251
14.2 网络通信协议 252
14.2.1 知识准备:TCP 252
14.2.2 知识准备:IP 252
14.2.3 知识准备:TCP/IP 253
14.2.4 知识准备:IP地址 253
14.2.5 端口 254
14.2.6 任务一:通过Java编程获得IP地址 255
14.3 Socket套接字 256
14.4 Java Socket编程 257
14.4.1 ServerSocket 257
14.4.2 Socket类 257
14.4.3 Socket通信过程 258
14.4.4 任务二:Socket通信实例 258
14.5 Java URL类 260
14.5.1 知识准备:URL概念 260
14.5.2 知识准备:Java中的URL类 260
14.5.3 知识拓展:URL应用实例 261
14.6 本章小结 263
课后练习题 264
第 15章 Android下的Java高效编程 265
15.1 Android下Java编程性能优化介绍 266
15.2 提升性能的优化方法 266
15.2.1 使用本地方法 266
15.2.2 使用虚方法优于使用接口 267
15.2.3 使用静态代替虚拟 267
15.2.4 缓冲对象属性调用 267
15.2.5 声明final常量 268
15.2.6 考虑用包访问权限替代私有访问权限 268
15.2.7 使用改进的for循环语法 269
15.3 编程中注意避免的事项 270
15.3.1 避免创建不必要的对象 270
15.3.2 避免使用内部的Getters/Setters 270
15.3.3 避免使用枚举类型 270
15.3.4 避免使用浮点类型 271
15.4 太阳城
操作的时间比较 271
15.5 本章小结 272
课后练习题 272