本书不仅可以帮助有经验的Java程序员充分掌握Java 9到Java 11,也为新的开发者提供了学习的路径。书中用大量示例演示了如何充分利用现代的Java API和开发的最佳实践。本版彻底修订了关于Java平台模块系统的内容。
全书分为两部分:第一部分对Java编程语言和Java平台的核心运行时方面进行了快速、清晰的介绍,第二部分介绍了Java发行版附带的新工具。
通过学习本书,你可以:
■ 快速了解语言细节的新进展,包括Java 9到Java 11的更改。
■ 使用Java基本句法学习面向对象编程。
■ 探索泛型、枚举、注解及lambda表达式。
■ 理解面向对象程序设计的基础技术。
■ 详解并发与内存管理,以及它们的紧密关联。
■ 使用Java集合处理常见的数据格式。
■ 使用JShell探究在新的交互式环境中的Java编程。
■ 熟练使用OpenJDK中的开发工具。
本书共分为两部分:
第1部分介绍了Java开发环境、基本句法、面向对象编程、类型系统、内存管理以及并发机制;
第2部分介绍了Java原生的核心库以及一些中高级开发者常用的技术,包括文档约定、集合类、数据格式、文件和I/O操作、类加载、反射、模块化以及平台工具。
本书既适合新手Java程序员入门,也适合有多年Java开发经验的工程师阅读。
【第一部分 Java介绍9】
第1章 Java环境介绍11
1.1 Java语言、JVM和生态系统11
1.2 Java和JVM简史16
1.3 Java程序的生命周期17
1.4 Java的安全性19
1.5 Java和其他语言的比较20
1.6 回应对Java的一些批评21
第2章 Java的基本句法24
2.1 Java程序概览25
2.2 词法结构25
2.3 基本数据类型29
2.4 表达式和运算符36
2.5 语句52
2.6 方法69
2.7 类和对象75
2.8 数组79
2.9 引用类型86
2.10 包和Java命名空间90
2.11 Java源文件的结构94
2.12 定义并运行Java程序95
2.13 小结96
第3章 Java面向对象编程97
3.1 类简介97
3.2 字段和方法99
3.3 创建和初始化对象105
3.4 子类与继承109
3.5 数据隐藏和封装120
3.6 抽象类和方法127
3.7 修饰符小结131
第4章 Java类型系统133
4.1 接口133
4.2 Java泛型141
4.3 枚举和注解153
4.4 lambda表达式157
4.5 嵌套类型164
4.6 无法表示的类型和var174
4.7 小结175
第5章 Java的面向对象设计177
5.1 Java的值177
5.2 java.lang.Object类的重要方法178
5.3 面向对象设计概要182
5.4 带有lambda表达式的面向对象设计192
5.5 异常和异常处理195
5.6 Java编程的安全性197
第6章 Java实现内存管理和并发编程的方式199
6.1 Java内存管理的基本概念199
6.2 JVM优化垃圾回收的方式203
6.3 HotSpot堆205
6.4 终结机制208
6.5 Java对并发编程的支持211
6.6 使用线程221
6.7 小结223
【第二部分 使用Java平台225】
第7章 编程和文档约定227
7.1 命名和大小写约定227
7.2 实用的命名方式229
7.3 Java文档注释230
7.4 doclet238
7.5 可移植程序的约定239
第8章 使用Java集合242
8.1 集合API简介242
8.2 Java流和lambda表达式261
8.3 小结268
第9章 处理常见的数据格式269
9.1 文本269
9.2 数字和数学运算276
9.3 在Java 8中处理日期和时间281
9.4 小结287
第10章 文件处理和I/O288
10.1 经典的Java I/O288
10.2 现代的Java I/O294
10.3 NIO中的通道和缓冲区297
10.4 异步I/O300
10.5 网络303
第11章 类加载、反射和方法句柄309
11.1 类文件、类对象和元数据309
11.2 类加载的各个阶段311
11.3 安全的编程和类加载314
11.4 应用类加载知识315
11.5 反射318
11.6 方法句柄323
第12章 Java平台模块化327
12.1 为什么要模块化328
12.2 自行开发模块331
12.3 模块化的问题340
12.4 小结342
第13章 平台工具344
13.1 命令行工具344
13.2 介绍JShell360
13.3 小结363
附录A 附加工具365
作者简介384
封面简介384
温馨提示:请使用泸西县图书馆的读者帐号和密码进行登录
“本书是当前Java编程的权威指南,我几乎每天都使用它以提醒自己思考使用某些特性和结构的原因,来让自己成为更有效率的程序员。”
—— Martjin Verburg
jClarity CEO兼伦敦Java社区领导者