Java JDK 9学习笔记
林信良(网名:良葛格),毕业于台湾大学电机工程学系。擅长技术写作、翻译与教育培训。喜好研究程序语言、框架、社群,从中学习设计、典范及文化,并利用闲暇之余记录所学技术,涵盖C/C 、Java、Ruby/Rails、Python、JavaScript、Haskell、OpenSCAD等领域。目前出版的著作有《JSP & Servlet学习笔记(第2版)》《Spring技术手册》《Java JDK 8 学习笔记》等,译作有《Ajax实战手册》《jQuery实战手册(第2版)》。
《Java JDK 9学习笔记》是作者多年来教学实践经验的总结,汇集了学员在学习Java 或认证考试时遇到的概念、操
作、应用等问题及解决方案。
《Java JDK 9学习笔记》针对Java SE 9 新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面
翻新,并详细介绍了Java 9 的模块化,JVM、JRE、Java SE API、JDK 与IDE 之间的对照关系。必
要时可从Java SE API 的源代码分析,了解各种语法在Java SE API 中如何应用。对于建议练习的范
例提供了Lab 文档,以突出练习重点。此外,《Java JDK 9学习…
查看完整
作、应用等问题及解决方案。
《Java JDK 9学习笔记》针对Java SE 9 新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面
翻新,并详细介绍了Java 9 的模块化,JVM、JRE、Java SE API、JDK 与IDE 之间的对照关系。必
要时可从Java SE API 的源代码分析,了解各种语法在Java SE API 中如何应用。对于建议练习的范
例提供了Lab 文档,以突出练习重点。此外,《Java JDK 9学习…
查看完整
目 录
Chapter 1 Java平台概论 1
1.1 Java不只是语言
2
1.1.1 前世今生
2
1.1.2 三大平台
5
1.1.3 JCP与JSR 6
1.1.4 Oracle JDK与OpenJDK 7
1.1.5 建议的学习路径
8
1.2 JVM/JRE/JDK 12
1.2.1 什么是JVM 12
1.2.2 区分JRE与JDK 14
1.2.3 下载、安装JDK 15
1.2.4 认识JDK安装内容 18
1.3 重点复习 19
Chapter 2 从JDK到IDE 21
2.1 从Hello World开始
22
2.1.1 撰写Java原始码 22
2.1.2 PATH是什么 24
2.1.3 JVM(java)与CLASSPATH 27
2.1.4 编译程序(javac)与
CLASSPATH
29
2.2 管理原始码与位码文档
30
2.2.1 编译程序(javac)与
SOURCEPATH
30
2.2.2 使用package管理类
32
2.2.3 使用import偷懒 34
2.3 初识模块平台系统
36
2.3.1 JVM(java)与module-
path
37
2.3.2 编译程序(javac)与
module-path
39
2.3.3 编译程序(javac)与
module-source-path
40
2.4 使用IDE 41
2.4.1 IDE项目管理基础 41
2.4.2 使用了哪个JRE 47
2.4.3 类文档版本
49
2.5 重点复习
51
Chapter 3 基础语法 53
3.1 类型、变量与运算符
54
3.1.1 类型
54
3.1.2 变量
57
3.1.3 运算符
60
3.1.4 类型转换
65
3.2 流程控制
68
3.2.1 if...else条件式
68
3.2.2 switch条件式
70
3.2.3 for循环 72
3.2.4 while循环
73
3.2.5 break、continue 74
3.3 重点复习
76
3.4 课后练习 77
Chapter 4 认识对象 78
4.1 类与对象
79
4.1.1 定义类
79
4.1.2 使用标准类
81
4.1.3 对象指定与相等性
84
4.2 基本类型打包器
86
4.2.1 打包基本类型
86
4.2.2 自动装箱、拆箱
87
4.2.3 自动装箱、拆箱的内幕
88
4.3 数组对象
90
4.3.1 数组基础
91
4.3.2 操作数组对象
93
4.3.3 数组复制
98
4.4 字符串对象
100
4.4.1 字符串基础
101
4.4.2 字符串特性
103
4.4.3 字符串编码
107
4.5 查询Java API文件
108
4.6 重点复习
113
4.7 课后练习
114
Chapter 5 对象封装 116
5.1 何谓封装
117
5.1.1 封装对象初始流程
117
5.1.2 封装对象操作流程
119
5.1.3 封装对象内部数据
121
5.2 类语法细节
123
5.2.1 public权限修饰
123
5.2.2 关于构造函数
125
5.2.3 构造函数与方法重载
126
5.2.4 使用this 128
5.2.5 static类成员
130
5.2.6 不定长度自变量
135
5.2.7 内部类
136
5.2.8 传值调用
138
5.3 重点复习
140
5.4 课后练习 141
Chapter 6 继承与多态 142
6.1 何谓继承
143
6.1.1 继承共同行为
143
6.1.2 多态与is-a 147
6.1.3 重新定义行为
150
6.1.4 抽象方法、抽象类
153
6.2 继承语法细节
154
6.2.1 protected成员
154
6.2.2 重新定义的细节
156
6.2.3 再看构造函数
157
6.2.4 再看final关键字
159
6.2.5 java.lang.Object 160
6.2.6 关于垃圾收集
165
6.2.7 再看抽象类
167
6.3 重点复习
169
6.4 课后练习
170
Chapter 7 接口与多态 171
7.1 何谓接口
172
7.1.1 接口定义行为
172
7.1.2 行为的多态
175
7.1.3 解决需求变化
178
7.2 接口语法细节
183
7.2.1 接口的默认
183
7.2.2 匿名内部类
187
7.2.3 使用enum枚举常数 190
7.3 重点复习
192
7.4 课后练习
193
Chapter 8 异常处理 194
8.1 语法与继承架构
195
8.1.1 使用try、catch
195
8.1.2 异常继承架构
197
8.1.3 要抓还是要抛
202
8.1.4 贴心还是造成麻烦
205
8.1.5 认识堆栈追踪
206
8.1.6 关于assert 210
8.2 异常与资源管理
213
8.2.1 使用finally 213
8.2.2 自动尝试关闭资源
215
8.2.3 java.lang.AutoCloseable
接口
217
8.3 重点复习
221
8.4 课后练习 222
Chapter 9 Collection与Map 223
9.1 使用Collection收集对象
224
9.1.1 认识Collection架构
224
9.1.2 具有索引的List 225
9.1.3 内容不重复的Set 228
9.1.4 支持队列操作的Queue 232
9.1.5 使用泛型
234
9.1.6 简介Lambda表达式
238
9.1.7 Interable与
Iterator
240
9.1.8 Comparable与
Comparator
243
9.2 键值对应的Map 248
9.2.1 常用Map操作类 249
9.2.2 访问Map键值 252
9.3 不可变的Collection
与Map 255
9.3.1 浅谈不可变特性
255
9.3.2 Collections的
unmodifiableXXX()
方法
256
9.3.3 List、Set、Map的of()
方法
258
9.4 重点复习
260
9.5 课后练习
262
Chapter 10 输入/输出 263
10.1 InputStream与
OutputStream
264
10.1.1 串流设计的概念
264
10.1.2 串流继承架构
266
10.1.3 串流处理装饰器
269
10.2 字符处理类
273
10.2.1 Reader与Writer继承
架构
274
10.2.2 字符处理装饰器
275
10.3 重点复习
277
10.4 课后练习
278
Chapter 11 线程与并行API 279
11.1 线程
280
11.1.1 线程简介
280
11.1.2 Thread与Runnable 282
11.1.3 线程生命周期
284
11.1.4 关于ThreadGroup 290
11.1.5 synchronized与
volatile
292
11.1.6 等待与通知
301
11.2 并行API 305
11.2.1 Lock、ReadWriteLock与
Condition
305
11.2.2 使用Executor 313
11.2.3 并行Collection简介
323
11.3 重点复习
326
11.4 课后练习 327
Chapter 12 Lambda 328
12.1 认识Lambda语法
329
12.1.1 Lambda语法概览
329
12.1.2 Lambda表达式与函数
接口
332
12.1.3 Lambda遇上this与
final
334
12.1.4 方法与构造函数参考
336
12.1.5 接口默认方法
338
12.2 Functional与Stream API 343
12.2.1 使用Optional取代
null
343
12.2.2 标准API的函数接口 345
12.2.3 使用Stream进行管道
操作
348
12.2.4 进行Stream的reduce
与collect 351
12.2.5 关于flatMap()方法
356
12.2.6 Stream相关API 359
12.2.7 JDK9 Optional与
Stream增强
360
12.3 Lambda、平行化与异步
处理
362
12.3.1 Stream与平行化
362
12.3.2 Arrays与平行化
366
12.3.3 CompletableFuture
非同步处理
367
12.3.4 JDK9 CompletableFuture
增强
369
12.4 重点复习
370
12.5 课后练习
371
Chapter 13 时间与日期 372
13.1 认识时间与日期
373
13.1.1 时间的度量
373
13.1.2 年历简介
374
13.1.3 认识时区
375
13.2 认识Date与Calendar
376
13.2.1 时间轴上瞬间的Date 376
13.2.2 格式化时间日期的
DateFormat
377
13.2.3 处理时间日期的
Calendar
379
13.2.4 设定TimeZone 382
13.3 新时间日期API 383
13.3.1 机器时间观点的API 383
13.3.2 人类时间观点的API 385
13.3.3 对时间的运算
387
13.3.4 年历系统设计
389
13.4 重点复习
390
13.5 课后练习
391
Chapter 14 NIO与NIO2 393
14.1 认识NIO 394
14.1.1 NIO概述 394
14.1.2 Channel架构与操作
395
14.1.3 Buffer架构与操作
396
14.2 NIO2文件系统
398
14.2.1 NIO2架构 398
14.2.2 操作路径
399
14.2.3 属性读取与设定
401
14.2.4 操作文档与目录
404
14.2.5 读取、访问目录
406
14.2.6 过滤、搜索文档
410
14.3 重点复习
412
14.4 课后练习
413
Chapter 15 通用API 414
15.1 日志
415
15.1.1 日志API简介 415
15.1.2 指定日志层级
417
15.1.3 使用Handler与
Formatter
419
15.1.4 自定义Handler、Formatter
与Filter 420
15.1.5 使用logging.
properties
422
15.2 国际化基础
423
15.2.1 使用ResourceBundle 423
15.2.2 使用Locale 424
15.3 规则表示式
426
15.3.1 规则表示式简介
426
15.3.2 Pattern与Matcher 433
15.4 处理数字
435
15.4.1 使用BigInteger 435
15.4.2 使用BigDecimal 437
15.4.3 数字的格式化
439
15.5 再谈堆栈追踪
441
15.5.1 获取
StackTraceElement
441
15.5.2 JDK9的Stack-
Walking API 443
15.6 重点复习
447
15.7 课后练习 448
Chapter 16 整合数据库 449
16.1 JDBC入门
450
16.1.1 JDBC简介 450
16.1.2 连接数据库
454
16.1.3 使用Statement、
ResultSet
459
16.1.4 使用PreparedStatement、
CallableStatement
464
16.2 JDBC进阶
468
16.2.1 使用DataSource取得
联机
468
16.2.2 使用ResultSet卷动、
更新数据
471
16.2.3 批次更新
473
16.2.4 Blob与Clob
474
16.2.5 交易简介
474
16.2.6 metadata简介
481
16.2.7 RowSet简介
484
16.3 重点复习
486
16.4 课后练习 487
Chapter 17 反射与类加载器 489
17.1 运用反射
490
17.1.1 Class与.class文档
490
17.1.2 使用Class.
forName() 492
17.1.3 从Class获得信息
494
17.1.4 从Class建立对象
496
17.1.5 操作对象方法与成员
499
17.1.6 动态代理
501
17.1.7 当反射遇上模块
505
17.1.8 使用ServiceLoader 511
17.2 了解类加载器
513
17.2.1 JDK9类加载器层级 513
17.2.2 建立ClassLoader
实例
516
17.3 重点复习
517
17.4 课后练习
519
Chapter 18 自定义泛型、枚举与注释 520
18.1 自定义泛型
521
18.1.1 使用extends与? 521
18.1.2 使用super与? 525
18.2 自定义枚举
528
18.2.1 了解java.lang.Enum类
528
18.2.2 enum高级运用 531
18.3 关于注释
536
18.3.1 常用标准注释
536
18.3.2 自定义注释类型
540
18.3.3 执行时期读取注释信息
545
18.4 重点复习
548
18.5 课后练习
549
Chapter 19 深入模块化 550
19.1 运用模块
551
19.1.1 模块的种类
551
19.1.2 requires、exports与
opens细节
554
19.1.3 修补模块
557
19.1.4 放宽模块封装与依赖
558
19.2 模块API 560
19.2.1 使用Module 560
19.2.2 使用
ModuleDescriptor
562
19.2.3 浅谈ModuleLayer 562
19.3 打包模块
564
19.3.1 使用jar打包 564
19.3.2 使用jmod打包 566
19.3.3 使用jlink建立执行时期
映像
568
19.4 重点复习
569
19.5 课后练习
570
Appendix 571
A.1 项目环境配置 572
A.2 打开案例 572
Java
SE 9 新功能索引
Java SE 9后的特性版本时间轴变动 15
JDK 9文档实体布局变动 18
初探模块平台系统 36
javac新增-release参数 50
支持Unicode 8.0 54
内建jshell 56
Java API文件支持搜索功能 112
StackTraceElement新增方法
207
Try-with-resources语法改进 217
定义匿名类别时的泛型语法改进 239
List、Set、Map新增of( )方法 258
接口支持定义private方法 340
Collectors新增filtering( )方法 356
Collectors新增flatMapping( )方法 359
Optional与Stream增强 360
CompletableFuture增强
369
支持UTF-8编码的.properities文件
425
Stack-Walking API 443
反射与类加载器机制 490
@Deprecated增强
537
ElementType新增MODULE
545
深入模块化 551
Java SE 9后的特性版本时间轴变动 15JDK 9文档实体布局变动 18初探模块平台系统 36javac新增-release参数 50支持Unicode 8.0 54内建jshell 56Java API文件支持搜索功能 112StackTraceElement新增方法 207Try-with-resources语法改进 217定义匿名类别时的泛型语法改进 239List、Set、Map新增of( )方法 258接口支持定义private方法 340Collectors新增filtering( )方法 356Collectors新增flatMapping( )方法 359Optional与Stream增强 360CompletableFuture增强 369支持UTF-8编码的.properities文件 425Stack-Walking API 443反射与类加载器机制 490@Deprecated增强 537ElementType新增MODULE 545深入模块化 551
^ 收 起
Chapter 1 Java平台概论 1
1.1 Java不只是语言
2
1.1.1 前世今生
2
1.1.2 三大平台
5
1.1.3 JCP与JSR 6
1.1.4 Oracle JDK与OpenJDK 7
1.1.5 建议的学习路径
8
1.2 JVM/JRE/JDK 12
1.2.1 什么是JVM 12
1.2.2 区分JRE与JDK 14
1.2.3 下载、安装JDK 15
1.2.4 认识JDK安装内容 18
1.3 重点复习 19
Chapter 2 从JDK到IDE 21
2.1 从Hello World开始
22
2.1.1 撰写Java原始码 22
2.1.2 PATH是什么 24
2.1.3 JVM(java)与CLASSPATH 27
2.1.4 编译程序(javac)与
CLASSPATH
29
2.2 管理原始码与位码文档
30
2.2.1 编译程序(javac)与
SOURCEPATH
30
2.2.2 使用package管理类
32
2.2.3 使用import偷懒 34
2.3 初识模块平台系统
36
2.3.1 JVM(java)与module-
path
37
2.3.2 编译程序(javac)与
module-path
39
2.3.3 编译程序(javac)与
module-source-path
40
2.4 使用IDE 41
2.4.1 IDE项目管理基础 41
2.4.2 使用了哪个JRE 47
2.4.3 类文档版本
49
2.5 重点复习
51
Chapter 3 基础语法 53
3.1 类型、变量与运算符
54
3.1.1 类型
54
3.1.2 变量
57
3.1.3 运算符
60
3.1.4 类型转换
65
3.2 流程控制
68
3.2.1 if...else条件式
68
3.2.2 switch条件式
70
3.2.3 for循环 72
3.2.4 while循环
73
3.2.5 break、continue 74
3.3 重点复习
76
3.4 课后练习 77
Chapter 4 认识对象 78
4.1 类与对象
79
4.1.1 定义类
79
4.1.2 使用标准类
81
4.1.3 对象指定与相等性
84
4.2 基本类型打包器
86
4.2.1 打包基本类型
86
4.2.2 自动装箱、拆箱
87
4.2.3 自动装箱、拆箱的内幕
88
4.3 数组对象
90
4.3.1 数组基础
91
4.3.2 操作数组对象
93
4.3.3 数组复制
98
4.4 字符串对象
100
4.4.1 字符串基础
101
4.4.2 字符串特性
103
4.4.3 字符串编码
107
4.5 查询Java API文件
108
4.6 重点复习
113
4.7 课后练习
114
Chapter 5 对象封装 116
5.1 何谓封装
117
5.1.1 封装对象初始流程
117
5.1.2 封装对象操作流程
119
5.1.3 封装对象内部数据
121
5.2 类语法细节
123
5.2.1 public权限修饰
123
5.2.2 关于构造函数
125
5.2.3 构造函数与方法重载
126
5.2.4 使用this 128
5.2.5 static类成员
130
5.2.6 不定长度自变量
135
5.2.7 内部类
136
5.2.8 传值调用
138
5.3 重点复习
140
5.4 课后练习 141
Chapter 6 继承与多态 142
6.1 何谓继承
143
6.1.1 继承共同行为
143
6.1.2 多态与is-a 147
6.1.3 重新定义行为
150
6.1.4 抽象方法、抽象类
153
6.2 继承语法细节
154
6.2.1 protected成员
154
6.2.2 重新定义的细节
156
6.2.3 再看构造函数
157
6.2.4 再看final关键字
159
6.2.5 java.lang.Object 160
6.2.6 关于垃圾收集
165
6.2.7 再看抽象类
167
6.3 重点复习
169
6.4 课后练习
170
Chapter 7 接口与多态 171
7.1 何谓接口
172
7.1.1 接口定义行为
172
7.1.2 行为的多态
175
7.1.3 解决需求变化
178
7.2 接口语法细节
183
7.2.1 接口的默认
183
7.2.2 匿名内部类
187
7.2.3 使用enum枚举常数 190
7.3 重点复习
192
7.4 课后练习
193
Chapter 8 异常处理 194
8.1 语法与继承架构
195
8.1.1 使用try、catch
195
8.1.2 异常继承架构
197
8.1.3 要抓还是要抛
202
8.1.4 贴心还是造成麻烦
205
8.1.5 认识堆栈追踪
206
8.1.6 关于assert 210
8.2 异常与资源管理
213
8.2.1 使用finally 213
8.2.2 自动尝试关闭资源
215
8.2.3 java.lang.AutoCloseable
接口
217
8.3 重点复习
221
8.4 课后练习 222
Chapter 9 Collection与Map 223
9.1 使用Collection收集对象
224
9.1.1 认识Collection架构
224
9.1.2 具有索引的List 225
9.1.3 内容不重复的Set 228
9.1.4 支持队列操作的Queue 232
9.1.5 使用泛型
234
9.1.6 简介Lambda表达式
238
9.1.7 Interable与
Iterator
240
9.1.8 Comparable与
Comparator
243
9.2 键值对应的Map 248
9.2.1 常用Map操作类 249
9.2.2 访问Map键值 252
9.3 不可变的Collection
与Map 255
9.3.1 浅谈不可变特性
255
9.3.2 Collections的
unmodifiableXXX()
方法
256
9.3.3 List、Set、Map的of()
方法
258
9.4 重点复习
260
9.5 课后练习
262
Chapter 10 输入/输出 263
10.1 InputStream与
OutputStream
264
10.1.1 串流设计的概念
264
10.1.2 串流继承架构
266
10.1.3 串流处理装饰器
269
10.2 字符处理类
273
10.2.1 Reader与Writer继承
架构
274
10.2.2 字符处理装饰器
275
10.3 重点复习
277
10.4 课后练习
278
Chapter 11 线程与并行API 279
11.1 线程
280
11.1.1 线程简介
280
11.1.2 Thread与Runnable 282
11.1.3 线程生命周期
284
11.1.4 关于ThreadGroup 290
11.1.5 synchronized与
volatile
292
11.1.6 等待与通知
301
11.2 并行API 305
11.2.1 Lock、ReadWriteLock与
Condition
305
11.2.2 使用Executor 313
11.2.3 并行Collection简介
323
11.3 重点复习
326
11.4 课后练习 327
Chapter 12 Lambda 328
12.1 认识Lambda语法
329
12.1.1 Lambda语法概览
329
12.1.2 Lambda表达式与函数
接口
332
12.1.3 Lambda遇上this与
final
334
12.1.4 方法与构造函数参考
336
12.1.5 接口默认方法
338
12.2 Functional与Stream API 343
12.2.1 使用Optional取代
null
343
12.2.2 标准API的函数接口 345
12.2.3 使用Stream进行管道
操作
348
12.2.4 进行Stream的reduce
与collect 351
12.2.5 关于flatMap()方法
356
12.2.6 Stream相关API 359
12.2.7 JDK9 Optional与
Stream增强
360
12.3 Lambda、平行化与异步
处理
362
12.3.1 Stream与平行化
362
12.3.2 Arrays与平行化
366
12.3.3 CompletableFuture
非同步处理
367
12.3.4 JDK9 CompletableFuture
增强
369
12.4 重点复习
370
12.5 课后练习
371
Chapter 13 时间与日期 372
13.1 认识时间与日期
373
13.1.1 时间的度量
373
13.1.2 年历简介
374
13.1.3 认识时区
375
13.2 认识Date与Calendar
376
13.2.1 时间轴上瞬间的Date 376
13.2.2 格式化时间日期的
DateFormat
377
13.2.3 处理时间日期的
Calendar
379
13.2.4 设定TimeZone 382
13.3 新时间日期API 383
13.3.1 机器时间观点的API 383
13.3.2 人类时间观点的API 385
13.3.3 对时间的运算
387
13.3.4 年历系统设计
389
13.4 重点复习
390
13.5 课后练习
391
Chapter 14 NIO与NIO2 393
14.1 认识NIO 394
14.1.1 NIO概述 394
14.1.2 Channel架构与操作
395
14.1.3 Buffer架构与操作
396
14.2 NIO2文件系统
398
14.2.1 NIO2架构 398
14.2.2 操作路径
399
14.2.3 属性读取与设定
401
14.2.4 操作文档与目录
404
14.2.5 读取、访问目录
406
14.2.6 过滤、搜索文档
410
14.3 重点复习
412
14.4 课后练习
413
Chapter 15 通用API 414
15.1 日志
415
15.1.1 日志API简介 415
15.1.2 指定日志层级
417
15.1.3 使用Handler与
Formatter
419
15.1.4 自定义Handler、Formatter
与Filter 420
15.1.5 使用logging.
properties
422
15.2 国际化基础
423
15.2.1 使用ResourceBundle 423
15.2.2 使用Locale 424
15.3 规则表示式
426
15.3.1 规则表示式简介
426
15.3.2 Pattern与Matcher 433
15.4 处理数字
435
15.4.1 使用BigInteger 435
15.4.2 使用BigDecimal 437
15.4.3 数字的格式化
439
15.5 再谈堆栈追踪
441
15.5.1 获取
StackTraceElement
441
15.5.2 JDK9的Stack-
Walking API 443
15.6 重点复习
447
15.7 课后练习 448
Chapter 16 整合数据库 449
16.1 JDBC入门
450
16.1.1 JDBC简介 450
16.1.2 连接数据库
454
16.1.3 使用Statement、
ResultSet
459
16.1.4 使用PreparedStatement、
CallableStatement
464
16.2 JDBC进阶
468
16.2.1 使用DataSource取得
联机
468
16.2.2 使用ResultSet卷动、
更新数据
471
16.2.3 批次更新
473
16.2.4 Blob与Clob
474
16.2.5 交易简介
474
16.2.6 metadata简介
481
16.2.7 RowSet简介
484
16.3 重点复习
486
16.4 课后练习 487
Chapter 17 反射与类加载器 489
17.1 运用反射
490
17.1.1 Class与.class文档
490
17.1.2 使用Class.
forName() 492
17.1.3 从Class获得信息
494
17.1.4 从Class建立对象
496
17.1.5 操作对象方法与成员
499
17.1.6 动态代理
501
17.1.7 当反射遇上模块
505
17.1.8 使用ServiceLoader 511
17.2 了解类加载器
513
17.2.1 JDK9类加载器层级 513
17.2.2 建立ClassLoader
实例
516
17.3 重点复习
517
17.4 课后练习
519
Chapter 18 自定义泛型、枚举与注释 520
18.1 自定义泛型
521
18.1.1 使用extends与? 521
18.1.2 使用super与? 525
18.2 自定义枚举
528
18.2.1 了解java.lang.Enum类
528
18.2.2 enum高级运用 531
18.3 关于注释
536
18.3.1 常用标准注释
536
18.3.2 自定义注释类型
540
18.3.3 执行时期读取注释信息
545
18.4 重点复习
548
18.5 课后练习
549
Chapter 19 深入模块化 550
19.1 运用模块
551
19.1.1 模块的种类
551
19.1.2 requires、exports与
opens细节
554
19.1.3 修补模块
557
19.1.4 放宽模块封装与依赖
558
19.2 模块API 560
19.2.1 使用Module 560
19.2.2 使用
ModuleDescriptor
562
19.2.3 浅谈ModuleLayer 562
19.3 打包模块
564
19.3.1 使用jar打包 564
19.3.2 使用jmod打包 566
19.3.3 使用jlink建立执行时期
映像
568
19.4 重点复习
569
19.5 课后练习
570
Appendix 571
A.1 项目环境配置 572
A.2 打开案例 572
Java
SE 9 新功能索引
Java SE 9后的特性版本时间轴变动 15
JDK 9文档实体布局变动 18
初探模块平台系统 36
javac新增-release参数 50
支持Unicode 8.0 54
内建jshell 56
Java API文件支持搜索功能 112
StackTraceElement新增方法
207
Try-with-resources语法改进 217
定义匿名类别时的泛型语法改进 239
List、Set、Map新增of( )方法 258
接口支持定义private方法 340
Collectors新增filtering( )方法 356
Collectors新增flatMapping( )方法 359
Optional与Stream增强 360
CompletableFuture增强
369
支持UTF-8编码的.properities文件
425
Stack-Walking API 443
反射与类加载器机制 490
@Deprecated增强
537
ElementType新增MODULE
545
深入模块化 551
Java SE 9后的特性版本时间轴变动 15JDK 9文档实体布局变动 18初探模块平台系统 36javac新增-release参数 50支持Unicode 8.0 54内建jshell 56Java API文件支持搜索功能 112StackTraceElement新增方法 207Try-with-resources语法改进 217定义匿名类别时的泛型语法改进 239List、Set、Map新增of( )方法 258接口支持定义private方法 340Collectors新增filtering( )方法 356Collectors新增flatMapping( )方法 359Optional与Stream增强 360CompletableFuture增强 369支持UTF-8编码的.properities文件 425Stack-Walking API 443反射与类加载器机制 490@Deprecated增强 537ElementType新增MODULE 545深入模块化 551
^ 收 起
林信良(网名:良葛格),毕业于台湾大学电机工程学系。擅长技术写作、翻译与教育培训。喜好研究程序语言、框架、社群,从中学习设计、典范及文化,并利用闲暇之余记录所学技术,涵盖C/C 、Java、Ruby/Rails、Python、JavaScript、Haskell、OpenSCAD等领域。目前出版的著作有《JSP & Servlet学习笔记(第2版)》《Spring技术手册》《Java JDK 8 学习笔记》等,译作有《Ajax实战手册》《jQuery实战手册(第2版)》。
《Java JDK 9学习笔记》是作者多年来教学实践经验的总结,汇集了学员在学习Java 或认证考试时遇到的概念、操
作、应用等问题及解决方案。
《Java JDK 9学习笔记》针对Java SE 9 新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面
翻新,并详细介绍了Java 9 的模块化,JVM、JRE、Java SE API、JDK 与IDE 之间的对照关系。必
要时可从Java SE API 的源代码分析,了解各种语法在Java SE API 中如何应用。对于建议练习的范
例提供了Lab 文档,以突出练习重点。此外,《Java JDK 9学习笔记》还将IDE 操作纳为教学内容之一,让读者能与实
践相结合,轻松快速掌握Java 编程技巧。
《Java JDK 9学习笔记》适合Java 的初、中级读者以及广大Java 应用开发人员阅读。
《Java JDK 9学习笔记》资料可通过http://www.tupwk.com.cn/downpage 免费下载。
^ 收 起
作、应用等问题及解决方案。
《Java JDK 9学习笔记》针对Java SE 9 新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面
翻新,并详细介绍了Java 9 的模块化,JVM、JRE、Java SE API、JDK 与IDE 之间的对照关系。必
要时可从Java SE API 的源代码分析,了解各种语法在Java SE API 中如何应用。对于建议练习的范
例提供了Lab 文档,以突出练习重点。此外,《Java JDK 9学习笔记》还将IDE 操作纳为教学内容之一,让读者能与实
践相结合,轻松快速掌握Java 编程技巧。
《Java JDK 9学习笔记》适合Java 的初、中级读者以及广大Java 应用开发人员阅读。
《Java JDK 9学习笔记》资料可通过http://www.tupwk.com.cn/downpage 免费下载。
^ 收 起
比价列表