目  录





第一部分  Java编程概述
第1章  Java 12入门知识	3
1.1  如何安装和运行Java	3
1.1.1  何为JDK以及为何需要JDK	4
1.1.2  Java SE的安装	4
1.1.3  命令和实用工具	5
1.2  集成开发环境	6
1.2.1  选择一种IDE	6
1.2.2  安装和配置IntelliJ IDEA	7
1.2.3  创建项目	8
1.2.4  从命令行执行示例程序	13
1.3  Java基本类型和运算符	14
1.3.1  boolean(布尔)类型	14
1.3.2  数值类型	14
1.3.3  基本类型的默认值	17
1.3.4  基本类型的字面值	17
1.3.5  新增的压缩数字格式	19
1.3.6  运算符	19
1.4  String(字符串)类型和字面值	22
1.4.1  字符串字面值	23
1.4.2  字符串不变性	24
1.5  标识符和变量	25
1.5.1  标识符	25
1.5.2  变量声明(定义)与初始化	25
1.5.3  类型持有器var	26
1.6  Java语句	26
1.6.1  表达式语句	27
1.6.2  控制流语句	27
本章小结	35
第2章  Java面向对象编程	36
2.1  OOP概念	36
2.1.1  对象/类	37
2.1.2  继承	37
2.1.3  抽象/接口	38
2.1.4  封装	39
2.1.5  多态性	39
2.2  类	39
2.2.1  方法	40
2.2.2  可变参数方法	41
2.2.3  构造方法	42
2.2.4  new运算符	44
2.2.5  java.lang.Object类	45
2.2.6  实例属性和方法以及静态属性和方法	46
2.3  接口	48
2.3.1  默认方法	49
2.3.2  私有方法	50
2.3.3  静态字段和方法	50
2.3.4  接口与抽象类对比	50
2.4  重载、覆盖与隐藏	51
2.4.1  重载	51
2.4.2  覆盖	52
2.4.3  隐藏	54
2.5  final变量、final方法和final类	56
2.5.1  final变量	56
2.5.2  final方法	57
2.5.3  final类	57
2.6  多态性实战	58
2.6.1  对象工厂	58
2.6.2  instanceof运算符	60
本章小结	61
第3章  Java基础知识	62
3.1  包、导入和访问修饰符	62
3.1.1  包	63
3.1.2  导入	63
3.1.3  访问修饰符	64
3.2  Java引用类型	66
3.2.1  类与接口	67
3.2.2  数组	67
3.2.3  枚举	68
3.2.4  默认值与字面值	70
3.2.5  引用类型作为方法参数	70
3.2.6  equals()方法	72
3.3  保留和受限关键字	74
3.3.1  保留关键字	74
3.3.2  受限关键字	75
3.4  this和super两个关键字的用法	75
3.4.1  this关键字的用法	75
3.4.2  super关键字的用法	76
3.5  基本类型间的转换	77
3.5.1  加宽转换	77
3.5.2  缩窄转换	78
3.5.3  转换方法	78
3.6  基本类型和引用类型间的转换	80
3.6.1  装箱	80
3.6.2  拆箱	81
本章小结	82
第二部分  Java主要构建单元
第4章  异常处理	85
4.1  Java异常处理框架	85
4.2  受检型异常和非受检型异常	86
4.3  try块、catch块和finally块	88
4.4  throws语句	89
4.5  throw语句	90
4.6  assert语句	91
4.7  异常处理中最佳实践	92
本章小结	92
第5章  字符串、输入输出和文件	93
5.1  字符串处理	93
5.1.1  String类处理方法	93
5.1.2  String实用工具	97
5.2  I/O流	99
5.2.1  流数据	99
5.2.2  InputStream类及其子类	100
5.2.3  OutputStream类及其子类	107
5.2.4  Reader类和Writer类及其子类	109
5.2.5  java.io包中其他类	111
5.2.6  java.util.Scanner类	117
5.3  文件管理	119
5.3.1  创建和删除文件和目录	119
5.3.2  列出文件和目录	120
5.4  Apache的FileUtils和IOUtils实用工具	121
5.4.1  FileUtils类	122
5.4.2  IOUtils类	122
本章小结	123
第6章  数据结构、泛型和流行实用工具	124
6.1  List接口、Set接口和Map接口	124
6.1.1  泛型	125
6.1.2  如何对List和Set初始化	125
6.1.3  java.lang.Iterable接口	128
6.1.4  Collection接口	128
6.1.5  List接口	130
6.1.6  Set接口	131
6.1.7  Map接口	132
6.1.8  不可修改的集合	134
6.2  Collections实用工具	134
6.2.1  java.util.Collections类	134
6.2.2  org.apache.commons.collections4.CollectionUtils类	136
6.3  Arrays实用工具	137
6.3.1  java.util.Arrays类	137
6.3.2  org.apache.commons.lang3.ArrayUtils类	138
6.4  Objects实用工具	139
6.4.1  java.util.Objects类	139
6.4.2  org.apache.commons.long3.ObjectUtils类	142
6.5  java.time包	142
6.5.1  LocalDate类	142
6.5.2  LocalTime类	145
6.5.3  LocalDateTime类	145
6.5.4  Period类和Duration类	146
本章小结	147
第7章  Java标准库和外部库	148
7.1  Java类库	148
7.1.1  java.lang包	149
7.1.2  java.util包	150
7.1.3  java.time包	150
7.1.4  java.io包和java.nio包	151
7.1.5  java.sql包和javax.sql包	151
7.1.6  java.net包	151
7.1.7  java.lang.Math类和java.math包	151
7.1.8  java.awt包、javax.swing包和javafx包	151
7.2  Java外部库	152
7.2.1  org.junit包	152
7.2.2  org.mockito包	153
7.2.3  org.apache.log4j包和org.slf4j包	154
7.2.4  org.apache.commons包	156
本章小结	159
第8章  多线程和并发处理	160
8.1  线程与进程对比	160
8.2  用户线程与守护线程对比	160
8.3  Thread类的扩展	161
8.4  Runnable接口的实现	162
8.5  Thread类的扩展与Runnable接口的实现对比	163
8.6  线程池的使用	164
8.7  如何从线程获得结果	169
8.8  并行处理与并发处理对比	173
8.9  相同资源的并发修改	173
8.9.1  原子变量	176
8.9.2  同步方法	177
8.9.3  同步块	177
8.9.4  并发集合	178
8.9.5  内存一致性错误的处理	180
本章小结	180
第9章  JVM结构和垃圾收集	181
9.1  Java应用程序的执行	181
9.1.1  使用IDE	181
9.1.2  从命令行运行类	184
9.1.3  从命令行运行JAR文件	186
9.1.4  从命令行运行可执行的JAR文件	187
9.2  Java进程	187
9.2.1  类的加载	189
9.2.2  类的链接	190
9.2.3  类的初始化	190
9.2.4  类的实例化	190
9.2.5  方法执行	191
9.2.6  垃圾收集	191
9.2.7  应用程序终止	191
9.3  JVM结构	193
9.3.1  运行时数据区	193
9.3.2  类加载器	193
9.3.3  执行引擎	193
9.4  垃圾收集	194
9.4.1  响应时间、吞吐量和全局停顿	194
9.4.2  对象寿命和世代	194
9.4.3  全局停顿无法避免时	195
本章小结	195
第10章  数据库数据管理	196
10.1  创建数据库	196
10.2  创建数据库结构	197
10.3  连接到数据库	199
10.4  关闭连接	201
10.5  数据的CRUD操作	202
10.5.1  INSERT语句	202
10.5.2  SELECT语句	202
10.5.3  UPDATE语句	203
10.5.4  DELETE语句	204
10.5.5  使用Statement接口	204
10.5.6  使用PreparedStatement接口	208
10.5.7  使用CallableStatement接口	209
本章小结	210
第11章  网络编程	211
11.1  网络协议	211
11.2  基于UDP的通信	212
11.3  基于TCP的通信	215
11.3.1  java.net.ServerSocket类	216
11.3.2  java.net.Socket类	218
11.3.3  示例程序的运行	219
11.4  UDP与TCP对比	220
11.5  基于URL的通信	221
11.5.1  URL语法	221
11.5.2  java.net.URL类	222
11.6  使用HTTP 2客户端API	226
11.6.1  阻塞HTTP请求	227
11.6.2  非阻塞(异步)HTTP请求	229
11.6.3  服务器推送功能	233
11.6.4  WebSocket支持	234
本章小结	235
第12章  Java GUI编程	236
12.1  Java GUI技术	236
12.2  JavaFX基础知识	237
12.3  JavaFX简单编程示例	239
12.4  控件元素	241
12.5  图表	243
12.6  CSS的应用	244
12.7  FXML的使用	246
12.8  HTML的嵌入	250
12.9  媒体的播放	256
12.10  特效的添加	259
本章小结	266
第三部分  Java高级阶段
第13章  函数式编程	269
13.1  何为函数式编程	269
13.1.1  函数式接口	271
13.1.2  lambda表达式	272
13.1.3  lambda参数的局部变量语法	273
13.2  标准函数式接口	274
13.2.1  Consumer<T>接口	274
13.2.2  Predicate<T>接口	276
13.2.3  Supplier<T>接口	277
13.2.4  Function<T, R>接口	277
13.2.5  其他标准函数式接口	279
13.3  lambda表达式的限制	279
13.4  方法引用	280
本章小结	282
第14章  Java标准流	283
14.1  流——数据源和操作源	283
14.2  流的初始化	284
14.2.1  Stream接口	284
14.2.2  Stream.Builder接口	287
14.2.3  其他类和接口	288
14.3  操作(方法)	290
14.3.1  中间操作	290
14.3.2  终止操作	293
14.4  数值流接口	308
14.4.1  创建流	308
14.4.2  中间操作	308
14.4.3  终止操作	310
14.5  并行流	311
14.5.1  无状态操作和有状态操作	311
14.5.2  顺序处理还是并行处理	312
本章小结	312
第15章  反应式编程	313
15.1  异步处理	313
15.1.1  顺序流和并行流	313
15.1.2  CompletableFuture对象的使用	315
15.2  非阻塞API	316
15.2.1  java.io包与java.nio包对比	316
15.2.2  事件/运行循环	316
15.3  反应式体系	317
15.3.1  响应性	318
15.3.2  复原性	318
15.3.3  灵活性	318
15.3.4  消息驱动	318
15.4  反应式流	319
15.5  RxJava——Java反应式扩展	320
15.5.1  Observable对象的划分	321
15.5.2  Disposable对象	327
15.5.3  Observable对象的创建	328
15.5.4  操作符	330
15.5.5  多线程(调度器)	337
本章小结	341
第16章  微服务架构	342
16.1  何为微服务	342
16.2  微服务架构的规模	343
16.3  微服务架构如何相互交流	344
16.4  微服务架构的反应式系统	346
16.4.1  HTTP服务器	346
16.4.2  EventBus消息接收器	349
16.4.3  EventBus消息发送器	350
16.4.4  反应式系统演示	353
本章小结	354
第17章  Java微基准测试工具	355
17.1  何为JMH	355
17.2  JMH基准的创建	357
17.3  使用IDE插件运行基准	358
17.4  JMH基准参数	361
17.4.1  模式	361
17.4.2  输出时间单位	361
17.4.3  迭代	361
17.4.4  分叉	361
17.5  JMH使用示例	362
17.5.1  使用@State注解	363
17.5.2  使用Blackhole对象	364
17.5.3  使用@CompilerControl注解	364
17.5.4  使用@Param注解	365
17.6  告诫之语	365
本章小结	366
第18章  高质量代码编写最佳实践	367
18.1  Java行业惯用语、实现及用法	367
18.1.1  equals()方法和hashCode()方法	367
18.1.2  compareTo()方法	369
18.1.3  clone()方法	371
18.1.4  StringBuffer类和StringBuilder类	374
18.1.5  try子句、catch子句和finally子句	374
18.2  最佳设计实践	374
18.2.1  松耦合功能区的识别	374
18.2.2  功能区的传统层划分	374
18.2.3  接口代码的编写	375
18.2.4  工厂方法的使用	375
18.2.5  宁组合勿继承	375
18.2.6  库的使用	375
18.3  代码为人而写	375
18.4  测试——通向高质量代码的捷径	376
本章小结	377
第19章  Java的最新特征	378
19.1  Java仍在继续进化	378
19.2  Panama项目	379
19.3  Valhalla项目	379
19.4  Amber项目	380
19.4.1  数据类	380
19.4.2  模式匹配	381
19.4.3  原字符串字面值	382
19.4.4  简洁方法体	382
19.4.5  lambda遗留	383
19.5  Loom项目	384
19.6  Skara项目	385
本章小结	385


                       

??

??

??


VI	Java 12程序设计学习指南	



		目录	VII