本书不仅可以帮助有经验的Java程序员充分掌握Java 9到Java 11,也为新的发者提供了学习的路径。书中用大量示例演示了如何充分利用现代的Java API和发的实践。本版彻底修订了关于Java平台模块系统的内容。 全书分为两部分:部分对Java编程语言和Java平台的核心运行时方面行了快速、清晰的介绍,第二部分介绍了Java发行版附带的新工具。 通过学习本书,你可以: ■ 快速了解语言细节的新展,包括Java 9到Java 11的更改。
售 价:¥
纸质售价:¥93.10购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
作者简介
封面简介
译者序
O’Reilly Media,Inc.介绍
前言
第一部分 Java介绍
第1章 Java环境介绍
1.1 Java语言、JVM和生态系统
1.1.1 Java语言是什么
1.1.2 JVM是什么
1.1.3 Java生态系统是什么
1.2 Java和JVM简史
1.3 Java程序的生命周期
1.4 Java的安全性
1.5 Java和其他语言的比较
1.5.1 Java和C语言比较
1.5.2 Java和C++比较
1.5.3 Java和Python比较
1.5.4 Java和JavaScript比较
1.6 回应对Java的一些批评
1.6.1 过度复杂
1.6.2 变化缓慢
1.6.3 性能问题
1.6.4 不够安全
1.6.5 过于侧重企业
第2章 Java的基本句法
2.1 Java程序概览
2.2 词法结构
2.2.1 Unicode字符集
2.2.2 区分大小写与空白
2.2.3 注释
2.2.4 保留字
2.2.5 标识符
2.2.6 字面量
2.2.7 标点符号
2.3 基本数据类型
2.3.1 布尔类型
2.3.2 字符类型
2.3.3 整数类型
2.3.4 浮点数类型
2.3.5 基本类型之间的转换
2.4 表达式和运算符
2.4.1 运算符概述
2.4.2 算术运算符
2.4.3 字符串连接运算符
2.4.4 递增和递减运算符
2.4.5 比较运算符
2.4.6 逻辑运算符
2.4.7 位运算符和位移运算符
2.4.8 赋值运算符
2.4.9 条件运算符
2.4.10 instanceof操作符
2.4.11 特殊运算符
2.5 语句
2.5.1 表达式语句
2.5.2 复合语句
2.5.3 空语句
2.5.4 标签语句
2.5.5 局部变量声明语句
2.5.6 if/else语句
2.5.7 switch语句
2.5.8 while语句
2.5.9 do语句
2.5.10 for语句
2.5.11 for each语句
2.5.12 break语句
2.5.13 continue语句
2.5.14 return语句
2.5.15 synchronized语句
2.5.16 throw语句
2.5.17 try/catch/finally语句
2.5.18 处理资源的try语句
2.5.19 assert语句
2.6 方法
2.6.1 定义方法
2.6.2 方法修饰符
2.6.3 已检异常和未检异常
2.6.4 变长参数列表
2.7 类和对象
2.7.1 定义类
2.7.2 创建对象
2.7.3 使用对象
2.7.4 对象字面量
2.7.5 lambda表达式
2.8 数组
2.8.1 数组的类型
2.8.2 创建和初始化数组
2.8.3 使用数组
2.8.4 多维数组
2.9 引用类型
2.9.1 引用类型与基本类型
2.9.2 处理对象和引用副本
2.9.3 比较对象
2.9.4 装包和拆包转换
2.10 包和Java命名空间
2.10.1 声明包
2.10.2 全局唯一的包名
2.10.3 导入类型
2.10.4 导入静态成员
2.11 Java源文件的结构
2.12 定义并运行Java程序
2.13 小结
第3章 Java面向对象编程
3.1 类简介
3.1.1 面向对象的基本概念
3.1.2 其他引用类型
3.1.3 定义类的句法
3.2 字段和方法
3.2.1 声明字段的句法
3.2.2 类字段
3.2.3 类方法
3.2.4 实例字段
3.2.5 实例方法
3.2.6 this引用的工作方式
3.3 创建和初始化对象
3.3.1 定义构造方法
3.3.2 定义多个构造方法
3.3.3 在构造方法中调用其他构造方法
3.3.4 字段的默认值和初始化程序
3.4 子类与继承
3.4.1 扩展类
3.4.2 超类、对象和类层次结构
3.4.3 子类的构造方法
3.4.4 构造方法链和默认构造方法
3.4.5 遮盖超类的字段
3.4.6 覆盖超类的方法
3.5 数据隐藏和封装
3.5.1 访问控制
3.5.2 数据访问器方法
3.6 抽象类和方法
3.7 修饰符小结
第4章 Java类型系统
4.1 接口
4.1.1 定义接口
4.1.2 扩展接口
4.1.3 实现接口
4.1.4 默认方法
4.1.5 标记接口
4.2 Java泛型
4.2.1 介绍泛型
4.2.2 泛型和类型参数
4.2.3 菱形句法
4.2.4 类型擦除
4.2.5 绑定类型参数
4.2.6 协变简介
4.2.7 通配符
4.2.8 泛型方法
4.2.9 编译时和运行时类型
4.2.10 使用和设计泛型类型
4.3 枚举和注解
4.3.1 枚举
4.3.2 注解
4.3.3 自定义注解
4.3.4 类型注解
4.4 lambda表达式
4.4.1 转换lambda表达式
4.4.2 方法引用
4.4.3 函数式编程
4.4.4 词法作用域和局部变量
4.5 嵌套类型
4.5.1 静态成员类型
4.5.2 非静态成员类
4.5.3 局部类
4.5.4 匿名类
4.6 无法表示的类型和var
4.7 小结
第5章 Java的面向对象设计
5.1 Java的值
5.2 java.lang.Object类的重要方法
5.2.1 toString()方法
5.2.2 equals()方法
5.2.3 hashCode()方法
5.2.4 Comparable::compareTo()方法
5.2.5 clone()方法
5.3 面向对象设计概要
5.3.1 常量
5.3.2 接口与抽象类
5.3.3 默认方法可以当成特性使用吗
5.3.4 实例方法与类方法
5.3.5 组合与继承
5.3.6 字段继承和访问器
5.3.7 单例模式
5.4 带有lambda表达式的面向对象设计
5.4.1 lambda表达式与嵌套类
5.4.2 lambda表达式与方法引用
5.5 异常和异常处理
5.6 Java编程的安全性
第6章 Java实现内存管理和并发编程的方式
6.1 Java内存管理的基本概念
6.1.1 Java中的内存泄漏
6.1.2 标记清除算法简介
6.1.3 基本的标记清除算法
6.2 JVM优化垃圾回收的方式
筛选回收
6.3 HotSpot堆
6.3.1 其他回收程序
6.3.2 ParallelOld回收程序
6.4 终结机制
6.5 Java对并发编程的支持
6.5.1 线程的生命周期
6.5.2 可见性和可变性
6.5.3 互斥和状态保护
6.5.4 volatile关键字
6.5.5 Thread类中有用的方法
6.5.6 Thread类弃用的方法
6.6 使用线程
6.7 小结
第二部分 使用Java平台
第7章 编程和文档约定
7.1 命名和大小写约定
7.2 实用的命名方式
7.3 Java文档注释
7.3.1 文档注释的结构
7.3.2 文档注释标签
7.3.3 行内文档注释标签
7.3.4 文档注释中的交叉引用
7.3.5 包的文档注释
7.4 doclet
7.5 可移植程序的约定
第8章 使用Java集合
8.1 集合API简介
8.1.1 Collection接口
8.1.2 Set接口
8.1.3 List接口
8.1.4 Map接口
8.1.5 Queue接口和BlockingQueue接口
8.1.6 实用方法
8.1.7 数组和辅助方法
8.2 Java流和lambda表达式
8.2.1 函数式方式
8.2.2 流API
8.3 小结
第9章 处理常见的数据格式
9.1 文本
9.1.1 字符串的特殊句法
9.1.2 字符串的不可变性
9.1.3 正则表达式
9.2 数字和数学运算
9.2.1 Java表示整数类型的方式
9.2.2 Java中的浮点数
9.2.3 Java的数学函数标准库
9.3 在Java 8中处理日期和时间
9.3.1 介绍Java 8的日期和时间API
9.3.2 查询
9.3.3 调节器
9.3.4 过时的日期和时间API
9.4 小结
第10章 文件处理和I/O
10.1 经典的Java I/O
10.1.1 文件
10.1.2 流
10.1.3 Reader和Writer类
10.1.4 再次介绍TWR
10.1.5 经典I/O的问题
10.2 现代的Java I/O
10.2.1 Files类
10.2.2 Path
10.3 NIO中的通道和缓冲区
10.3.1 ByteBuffer对象
10.3.2 映射字节缓冲区
10.4 异步I/O
10.4.1 基于Future接口的方式
10.4.2 基于回调的方式
10.4.3 监视服务和目录搜索
10.5 网络
10.5.1 HTTP
10.5.2 TCP
10.5.3 IP
第11章 类加载、反射和方法句柄
11.1 类文件、类对象和元数据
11.1.1 类对象示例
11.1.2 类对象和元数据
11.2 类加载的各个阶段
11.2.1 加载
11.2.2 验证
11.2.3 准备和解析
11.2.4 初始化
11.3 安全的编程和类加载
11.4 应用类加载知识
11.5 反射
11.5.1 什么时候使用反射
11.5.2 如何使用反射
11.5.3 动态代理
11.6 方法句柄
11.6.1 MethodType对象
11.6.2 方法查找
11.6.3 调用方法句柄
第12章 Java平台模块化
12.1 为什么要模块化
12.2 自行开发模块
12.2.1 基本模块句法
12.2.2 构建简单的模块化应用程序
12.2.3 模块路径
12.2.4 自动模块
12.2.5 开放模块
12.2.6 服务
12.2.7 多发布JAR包
12.2.8 转换成多发布JAR包
12.2.9 迁移到模块
12.2.10 自定义运行时镜像
12.3 模块化的问题
12.3.1 安全性相关问题
12.3.2 缺乏版本控制
12.3.3 采用比例较低
12.4 小结
第13章 平台工具
13.1 命令行工具
13.1.1 javac
13.1.2 java
13.1.3 jar
13.1.4 javadoc
13.1.5 jdeps
13.1.6 jps
13.1.7 jstat
13.1.8 jstatd
13.1.9 jinfo
13.1.10 jstack
13.1.11 jmap
13.1.12 javap
13.1.13 jaotc
13.1.14 jlink
13.1.15 jmod
13.2 介绍JShell
13.3 小结
附录A 附加工具
介绍Nashorn
在Nashorn中执行JavaScript代码
Nashorn与javax.script包
Nashorn的高级用法
Nashorn与GraalVM的未来
VisualVM
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜