欢迎光临
免费的PDF电子书下载网站

Java JDK 9学习笔记 PDF下载

编辑推荐

《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学习笔记 PDF下载 ;

内容简介

《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 免费下载。

作者简介

林信良(网名:良葛格),毕业于台湾大学电机工程学系。擅长技术写作、翻译与教育培训。喜好研究程序语言、框架、社群,从中学习设计、典范及文化,并利用闲暇之余记录所学技术,涵盖C/C 、Java、Ruby/Rails、Python、JavaScript、Haskell、OpenSCAD等领域。目前出版的著作有《JSP &; Servlet学习笔记(第2版)》《Spring技术手册》《Java JDK 8 学习笔记》等,译作有《Ajax实战手册》《jQuery实战手册(第2版)》。

Java JDK 9学习笔记 PDF下载

目录


目 ; ; ; 录

 ;

 ;

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 CollectionMap  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

前沿

导    读
这份导读让你可以更了解如何使用《Java JDK 9学习笔记》。新旧版差异就目录上来说,你可以看出的差异是,上一版为18个章节,新版为19个章节,第19章“深入模块化”是新的章节,也是JDK9最重要的新增功能。然而,认识模块化最好的方式是从实际的例子着手,因此第1~18章,全部的范例都是采用模块项目构建。而在各章说明时若有需要,也适时地带入了常用的模块化概念。第19章一开始则是整理前18个章节遇到过的模块化介绍,然后紧接着深入探讨模块化。当然,照例要谈一些JDK9的其他新增功能,散落在各章节中适当的地方介绍。如果发现页侧有   图标,表示提及JDK9新功能,《Java JDK 9学习笔记》还提供了JDK9新功能快速查询目录。虽然程序常用来处理计算,然而许多开发者对数字处理其实认识不多,因而第15章通用API增加了数字处理的内容;为了认识JDK9 Stack-Walking API,读者有必要先认识如何取得并运用StackTraceElement来进行堆栈追踪,因而在第15章还增加了一个小节来介绍堆栈追踪,对于读者了解应用程序行为,或者是处理Bug,应该会有所帮助。在第2章介绍了模块化之后,范例项目便基于模块化设计了,并使用了JDK9的语法增强或改进部分程序代码;在9.1.6节介绍Lambda之后,为了提高可读性,使用Lambda相关语法或API来操作程序范例。旧版有个附录B“窗口程序设计”,在新版中删掉了,这表示了Java在窗口程序这块的地位。当然,Java有Java FX这项技术,如果仍希望使用Java进行窗口程序设计,可以寻找Java FX的专书。附录B虽然不在了,不过范例项目的程序代码留着作为第19章的练习,读者可以自行研读原始码,并试着将之模块化。如果一定需要点说明,可以参考旧版《Java SE 6技术手册》第19章说明:n github.com/JustinSDK/JavaSE6Tutorial/blob/master/docs/CH19.md字型《Java JDK 9学习笔记》正文中与程序代码相关的文字,都用固定字体来加以呈现,以与一般名词相区别。例如,JDK是一般名词,而String则是程序代码相关文字,所以使用了固定字体以区分。程序范例读者可以在以下网址下载《Java JDK 9学习笔记》的范例:n http://www.tupwk.com.cn/downpagen http://books.gotop.com.tw/v_ACL052100《Java JDK 9学习笔记》许多范例都使用完整程序操作来展现,如看到以下程序代码示范时:ClassObject Guess.javapackage cc.openhome;
import java.util.Scanner;import static java.lang.System.out;
public class Guess {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        int number = (int) (Math.random() * 10);        int guess;                do {            System.out.print("猜数字(0 ~ 9):");            guess = scanner.nextInt();        } while(guess != number);                out.println("猜中了...XD");    }}范例开始的左边名称为ClassObject表示可以在范例文件的samples文件夹的各章节文件夹中找到对应的ClassObject项目;而右边名称为Guess.java表示可以在项目中找到Guess.java文件。如果程序代码中出现标号与提示文字,表示在后续的正文中,会有对应于标号及提示的更详细说明。原则上,建议读者每个项目范例都能亲手动作撰写,但出于教学时间或操作时间上的考虑,《Java JDK 9学习笔记》有建议进行的练习。如果在范例开始前有个 图标,例如:Game1  SwordsMan.javapackage cc.openhome;
public class SwordsMan extends Role {    public void fight() {        System.out.println("挥剑攻击");    }}表示建议范例动手操作,而且在范例文件的labs文件夹中提供了练习项目的基础,打开项目后,完成项目中遗漏或必须补齐的程序代码或设定即可。如果使用以下程序代码呈现,则表示它是一个完整的程序内容,而不是项目的一部分,这主要用来展现一个完整文档的撰写方法。
public class Hello {     public static void main(String[] args) {         System.out.println("Hello!World!");     }}如果使用以下程序代码,则表示它是个代码段,主要展现程序撰写时需要特别注意的片段:SwordsMan swordsMan = new SwordsMan();...System.out.printf("剑士 (%s, %d, %d)%n", swordsMan.getName(),         swordsMan.getLevel(), swordsMan.getBlood());Magician magician = new Magician();...System.out.printf("魔法师 (%s, %d, %d)%n", magician.getName(),         magician.getLevel(), magician.getBlood());提示框在《Java JDK 9学习笔记》中会出现以下提示框:  针对课程中所提到的观点,提供了一些额外的资源或思考方向,暂时忽略这些提示对课程的影响,但有时间的话,针对这些提示做阅读、思考或讨论是有帮助的。
  针对课程中所提到的观点,以提示框方式特别呈现出必须注意的一些使用方式、陷阱或避开问题的方法,看到这个提示框时请读者集中精神阅读。附录范例文件包括《Java JDK 9学习笔记》中的所有范例,提供NetBeans范例项目,附录A用于说明如何使用这些范例项目。联系作者若有《Java JDK 9学习笔记》勘误反馈等相关书籍问题,可通过网站与作者联系。网址如下:http://openhome.cc

Java JDK 9学习笔记 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:Java JDK 9学习笔记