展开全部

主编推荐语

Java11新特性实战:面向对象编程、企业级应用开发。

内容简介

本书介绍从Java基础讲起,循序渐进地介绍了Java11开发环境、数据类型、面向对象编程、Java8到Java11所新增的新特性,这些特性既能满足当前企业级应用的开发需求,又可以最大幅度减轻开发者的负担。本书所介绍的知识较为前瞻,并辅以大量的案例,令读者知其然知其所以然。通过本书的学习,可以令读者拓展视野,并提升市场竞争能力。本书主要面向Java语言的爱好者和Java工程师。

目录

  • 版权信息
  • 作/者/简/介
  • 内容简介
  • 前言
  • 写作背景
  • 本书重要主题
  • 本书开发环境及JDK版本
  • 源代码
  • 致谢
  • 献给
  • 第1章 Java概述
  • 1.1 Java演进史
  • 1.1.1 Java简史
  • 1.1.2 Java大有可为
  • 1.2 现代Java新特性:从Java 8到Java 13
  • 1.2.1 Java 8新特性
  • 1.2.2 Java 9新特性
  • 1.2.3 Java 10新特性
  • 1.2.4 Java 11新特性
  • 1.2.5 Java 12新特性
  • 1.2.6 Java 13新特性
  • 1.3 如何学习本书
  • 1.3.1 学习的前置条件
  • 1.3.2 如何使用本书
  • 1.3.3 如何获取源码
  • 1.4 开发环境配置及编写第一个Java应用
  • 1.4.1 JDK 13的下载
  • 1.4.2 JDK 13的安装
  • 1.4.3 Eclipse的下载
  • 1.4.4 Eclipse的安装
  • 1.4.5 Eclipse的配置
  • 1.4.6 创建Java应用
  • 1.4.7 创建模块
  • 1.4.8 创建Hello World程序
  • 1.4.9 使用JUnit 5
  • 第2章 Java语言基础
  • 2.1 变量
  • 2.1.1 命名
  • 2.1.2 基本数据类型
  • 2.1.3 基本数据类型的默认值
  • 2.1.4 字面值
  • 2.1.5 基本数据类型之间的转换
  • 2.1.6 数组
  • 2.2 运算符
  • 2.2.1 赋值运算符
  • 2.2.2 算术运算符
  • 2.2.3 一元运算符
  • 2.2.4 等价和关系运算符
  • 2.2.5 条件运算符
  • 2.2.6 instanceof运算符
  • 2.2.7 位运算符和位移运算符
  • 2.3 表达式、语句和块
  • 2.3.1 表达式
  • 2.3.2 语句
  • 2.3.3 块
  • 2.4 控制流程语句
  • 2.4.1 if-then
  • 2.4.2 if-then-else
  • 2.4.3 switch
  • 2.4.4 while
  • 2.4.5 do-while
  • 2.4.6 for
  • 2.4.7 break
  • 2.4.8 continue
  • 2.4.9 return
  • 2.5 枚举类型
  • 2.6 泛型
  • 2.6.1 泛型的作用
  • 2.6.2 泛型类型
  • 2.6.3 泛型方法
  • 2.6.4 有界类型参数
  • 2.6.5 泛型的继承和子类型
  • 2.6.6 通配符
  • 2.6.7 类型擦除
  • 2.6.8 使用泛型的一些限制
  • 2.7 关键字
  • 第3章 面向对象编程基础
  • 3.1 编程的抽象
  • 3.2 类的示例
  • 3.3 对象的接口
  • 3.4 包
  • 3.5 对象提供服务
  • 3.6 隐藏实现的细节
  • 3.6.1 为什么需要控制对成员的访问
  • 3.6.2 Java的作用域
  • 3.7 实现的重用
  • 3.8 继承
  • 3.8.1 Java中的继承
  • 3.8.2 关于Shape的讨论
  • 3.8.3 实战:继承的示例
  • 3.9 is-a和is-like-a的关系
  • 3.10 多态性
  • 3.10.1 多态的定义
  • 3.10.2 理解多态的好处
  • 第4章 集合框架
  • 4.1 集合框架概述
  • 4.1.1 集合框架的定义
  • 4.1.2 Java集合框架的优点
  • 4.1.3 集合框架常见的接口
  • 4.1.4 集合框架的实现
  • 4.2 Collection接口
  • 4.2.1 遍历集合
  • 4.2.2 集合接口批量操作
  • 4.3 Set接口
  • 4.3.1 HashSet、TreeSet和LinkedHashSet的比较
  • 4.3.2 Set接口基本操作
  • 4.3.3 Set接口批量操作
  • 4.4 Map接口
  • 4.4.1 Map接口基本操作
  • 4.4.2 Map接口批量操作
  • 4.4.3 Map集合视图
  • 4.5 List接口
  • 4.5.1 集合操作
  • 4.5.2 位置访问和搜索操作
  • 4.5.3 List的迭代器
  • 4.5.4 范围视图操作
  • 4.5.5 List常用算法
  • 4.6 Queue接口
  • 4.7 Deque接口
  • 4.7.1 插入
  • 4.7.2 移除
  • 4.7.3 检索
  • 第5章 异常处理
  • 5.1 异常捕获与处理
  • 5.1.1 先从一个例子入手
  • 5.1.2 try块
  • 5.1.3 catch块
  • 5.1.4 在一个异常处理程序中处理多个类型的异常
  • 5.1.5 finally块
  • 5.1.6 try-with-resources语句
  • 5.2 通过方法声明抛出异常
  • 5.3 如何抛出异常
  • 5.3.1 throw语句
  • 5.3.2 Throwable类及其子类
  • 5.3.3 Error类
  • 5.3.4 Exception类
  • 5.4 异常链
  • 5.4.1 访问堆栈跟踪信息
  • 5.4.2 记录异常日志
  • 5.5 创建异常类
  • 5.5.1 一个创建异常类的例子
  • 5.5.2 选择超类
  • 5.6 未检查异常
  • 5.7 使用异常带来的优势
  • 5.7.1 将错误处理代码与“常规”代码分离
  • 5.7.2 将错误沿调用堆栈向上传递
  • 5.7.3 对错误类型进行分组和区分
  • 5.8 try-with-resources语句的详细用法
  • 5.8.1 手动关闭资源
  • 5.8.2 Java 7中的try-with-resources介绍
  • 5.8.3 try-with-resources在Java 9中的改进
  • 5.9 实战:使用try-with-resources
  • 第6章 I/O处理
  • 6.1 I/O流
  • 6.1.1 字节流
  • 6.1.2 字符流
  • 6.1.3 面向行的I/O
  • 6.1.4 缓冲流
  • 6.1.5 刷新缓冲流
  • 6.1.6 扫描和格式化文本
  • 6.1.7 命令行I/O
  • 6.1.8 数据流
  • 6.1.9 对象流
  • 6.2 文件I/O
  • 6.2.1 路径
  • 6.2.2 Path类
  • 6.2.3 Path的操作
  • 6.2.4 文件操作
  • 6.2.5 检查文件或目录
  • 6.2.6 删除文件或目录
  • 6.2.7 复制文件或目录
  • 6.2.8 移动一个文件或目录
  • 第7章 网络编程
  • 7.1 网络基础
  • 7.1.1 了解OSI参考模型
  • 7.1.2 TCP/IP网络模型与OSI模型的对比
  • 7.1.3 了解TCP
  • 7.1.4 了解UDP
  • 7.1.5 了解端口
  • 7.2 Socket
  • 7.2.1 了解Socket
  • 7.2.2 实战:实现一个echo服务器
  • 7.3 I/O模型的演进
  • 7.3.1 UNIX I/O模型的基本概念
  • 7.3.2 UNIX I/O模型
  • 7.3.3 常见Java I/O模型
  • 7.4 HTTP Client API概述
  • 7.5 HttpRequest
  • 7.6 HttpResponse
  • 7.7 实战:HTTP Client API的使用例子
  • 7.7.1 发起同步请求
  • 7.7.2 发起异步请求
  • 第8章 并发编程
  • 8.1 了解线程
  • 8.1.1 线程的状态
  • 8.1.2 进程和线程
  • 8.1.3 线程和纤程
  • 8.1.4 Java中的线程对象
  • 8.1.5 实战:多线程示例
  • 8.2 并发编程是把双刃剑
  • 8.2.1 死锁
  • 8.2.2 饥饿
  • 8.2.3 活锁
  • 8.3 解决并发问题的常用方法
  • 8.3.1 同步
  • 8.3.2 原子访问
  • 8.3.3 无锁化设计提升并发能力
  • 8.3.4 缓存提升并发能力
  • 8.3.5 更细颗粒度的并发单元
  • 8.4 守卫块
  • 8.5 不可变对象
  • 8.5.1 一个同步类的例子
  • 8.5.2 定义不可变对象的策略
  • 8.6 高级并发对象
  • 8.6.1 锁对象
  • 8.6.2 执行器
  • 8.6.3 并发集合
  • 8.6.4 原子变量
  • 8.6.5 并发随机数
  • 第9章 基本编程结构的改进
  • 9.1 直接运行Java源代码
  • 9.1.1 Java 11可以直接运行Java源码
  • 9.1.2 原理
  • 9.2 局部变量类型推断
  • 9.2.1 了解var声明变量的一些限制
  • 9.2.2 原理
  • 9.3 实战:var关键字的使用
  • 9.4 字符串处理增强
  • 9.4.1 支持Raw String Literals
  • 9.4.2 原理
  • 9.4.3 限制
  • 9.4.4 Java 11常用String API
  • 9.4.5 Java 12常用String API
  • 9.5 实战:Java 11字符串的使用
  • 9.5.1 Raw String Literals的使用
  • 9.5.2 String API的使用
  • 9.6 支持Unicode标准
  • 9.6.1 了解Unicode 10
  • 9.6.2 在控制台打印出Emoji
  • 9.6.3 在GUI中显示出Emoji
  • 9.7 Optional类
  • 9.7.1 复现NullPointerException
  • 9.7.2 Optional类的魔法
  • 9.7.3 Optional类的其他方法
  • 9.8 接口中的默认方法
  • 9.9 实战:接口中默认方法的使用
  • 9.10 接口中的静态方法
  • 9.11 实战:接口中静态方法的使用
  • 9.12 Switch表达式增强
  • 9.12.1 实战:Switch表达式的例子
  • 9.12.2 使用Switch表达式的注意事项
  • 9.13 紧凑数字格式
  • 9.14 文本块
  • 第10章 垃圾回收器的增强
  • 10.1 了解G1
  • 10.1.1 了解Java垃圾回收机制
  • 10.1.2 查找不再使用的对象
  • 10.1.3 垃圾回收算法
  • 10.1.4 分代垃圾回收
  • 10.1.5 Java垃圾回收器的历史
  • 10.1.6 了解G1的原理
  • 10.1.7 了解G1 Young GC
  • 10.1.8 了解G1 Mixed GC
  • 10.2 了解ZGC
  • 10.2.1 更短的停顿
  • 10.2.2 ZGC的着色指针和读屏障
  • 10.2.3 读屏障
  • 10.2.4 GC工作原理
  • 10.2.5 将未使用的堆内存返回给操作系统
  • 10.3 了解Epsilon
  • 10.4 了解Shenandoah
  • 10.4.1 Shenandoah工作原理
  • 10.4.2 性能指标
  • 第11章 使用脚本语言
  • 11.1 什么是JShell
  • 11.2 为什么需要JShell
  • 11.3 JShell的基本操作
  • 11.3.1 启动JShell
  • 11.3.2 退出JShell
  • 11.3.3 使用JShell测试API
  • 11.3.4 使用JShell操作流
  • 11.3.5 获取帮助
  • 11.4 实战:JShell的综合用法
  • 11.4.1 定义方法
  • 11.4.2 使用自定义的方法
  • 11.4.3 查看所有的变量及引用情况
  • 11.4.4 保存历史
  • 11.4.5 打开文件
  • 11.4.6 获取变量的引用值
  • 第12章 Lambda表达式及函数式编程
  • 12.1 Lambda表达式
  • 12.1.1 第一个Lambda表达式的例子
  • 12.1.2 第二个Lambda表达式的例子
  • 12.1.3 Lambda表达式简写的依据
  • 12.2 方法引用
  • 12.2.1 什么是方法引用
  • 12.2.2 实战:方法引用的例子
  • 12.3 构造函数引用
  • 12.4 函数式接口
  • 12.4.1 Predicate
  • 12.4.2 Consumer
  • 12.4.3 Function
  • 12.4.4 总结
  • 12.5 Consumer接口
  • 12.5.1 andThen
  • 12.5.2 IntConsumer
  • 12.5.3 LongConsumer
  • 12.5.4 DoubleConsumer
  • 12.5.5 BiConsumer
  • 12.6 Supplier接口
  • 12.6.1 get
  • 12.6.2 BooleanSupplier
  • 12.6.3 IntSupplier
  • 12.6.4 LongSupplier
  • 12.6.5 DoubleSupplier
  • 12.7 Predicate接口
  • 12.7.1 test
  • 12.7.2 negate
  • 12.7.3 or
  • 12.7.4 and
  • 12.7.5 not
  • 12.7.6 IntPredicate
  • 12.7.7 BiPredicate
  • 12.8 Function接口
  • 12.8.1 compose
  • 12.8.2 andThen
  • 12.8.3 identity
  • 12.9 类型检查
  • 12.10 类型推导
  • 12.11 使用本地变量
  • 第13章 Stream
  • 13.1 Stream API概述
  • 13.1.1 什么是聚合操作
  • 13.1.2 什么是Stream
  • 13.1.3 Stream的构成
  • 13.2 实例:Stream使用的例子
  • 13.2.1 传统的过滤数据的做法
  • 13.2.2 Stream过滤数据的做法
  • 13.3 Stream简化了编程
  • 13.4 Stream常用操作
  • 13.4.1 collect(toList())终止操作
  • 13.4.2 map中间操作
  • 13.4.3 filter中间操作
  • 13.4.4 count终止操作
  • 13.4.5 min终止操作
  • 13.4.6 max终止操作
  • 13.4.7 reduce终止操作
  • 13.5 过滤数据
  • 13.6 切分数据
  • 13.6.1 使用Predicate切分数据
  • 13.6.2 截断Stream
  • 13.6.3 跳过元素
  • 13.7 映射
  • 13.7.1 map
  • 13.7.2 flatMap
  • 13.8 查找和匹配
  • 13.8.1 allMatch
  • 13.8.2 anyMatch
  • 13.8.3 noneMatch
  • 13.8.4 findFirst
  • 13.8.5 findAny
  • 13.9 压缩数据
  • 13.9.1 计算总和
  • 13.9.2 计算最大值和最小值
  • 13.10 构造Stream
  • 13.10.1 从值中构造
  • 13.10.2 从nullable中构造
  • 13.10.3 从数组中构造
  • 13.10.4 从集合中构造
  • 13.10.5 从文件中构造
  • 13.11 收集收据
  • 13.11.1 Collector接口
  • 13.11.2 Collectors
  • 13.11.3 统计总数
  • 13.11.4 计算最大值和最小值
  • 13.11.5 求和
  • 13.11.6 求平均数
  • 13.11.7 连接字符串
  • 13.11.8 分组
  • 13.11.9 分区
  • 13.12 并行计算
  • 13.12.1 并行流
  • 13.12.2 Stream与parallelStream的抉择
  • 13.13 Spliterator接口
  • 第14章 集合的增强
  • 14.1 集合工厂
  • 14.1.1 List工厂
  • 14.1.2 Set工厂
  • 14.1.3 Map工厂
  • 14.2 实战:List工厂的使用
  • 14.3 实战:Set工厂的使用
  • 14.4 实战:Map工厂的使用
  • 14.5 List和Set常用方法
  • 14.5.1 removeIf
  • 14.5.2 replaceAll
  • 14.6 实战:removeIf方法的使用
  • 14.7 实战:replaceAll方法的使用
  • 14.8 Map常用方法
  • 14.8.1 forEach
  • 14.8.2 sorted
  • 14.8.3 getOrDefault
  • 14.9 实战:forEach方法的使用
  • 14.10 实战:sorted的使用
  • 14.11 实战:getOrDefault方法的使用
  • 14.12 实战:计算操作
  • 14.12.1 computeIfAbsent
  • 14.12.2 computeIfPresent
  • 14.12.3 compute
  • 14.13 实战:移除操作
  • 14.14 实战:替换操作
  • 14.14.1 replaceAll
  • 14.14.2 replace
  • 14.15 实战:合并操作
  • 14.16 ConcurrentHashMap的改进
  • 14.16.1 Java 8之前的ConcurrentHashMap类
  • 14.16.2 Java 8之后的ConcurrentHashMap类的改进
  • 第15章 新的日期和时间API
  • 15.1 了解LocalDate
  • 15.2 了解LocalTime
  • 15.3 了解LocalDateTime
  • 15.4 了解Instant
  • 15.5 了解Duration
  • 15.6 了解Period
  • 15.7 常用日期的操作
  • 15.8 调整时间
  • 15.9 格式化日期
  • 15.10 时区处理
  • 15.11 日历
  • 第16章 并发编程的增强
  • 16.1 Stream的parallel()方法
  • 16.2 执行器及线程池
  • 16.2.1 线程及线程数
  • 16.2.2 线程池
  • 16.2.3 Java 8中的Executors增强
  • 16.2.4 了解线程池的风险
  • 16.3 Future API
  • 16.3.1 并行提交任务
  • 16.3.2 顺序返回结果
  • 16.4 CompletableFuture
  • 16.4.1 CompletionStage
  • 16.4.2 CompletableFuture
  • 16.4.3 CompletableFuture类使用示例
  • 16.5 异步API中的异常处理
  • 16.6 box-and-channel模型
  • 16.7 实例:在线商城
  • 16.8 实例:同步方法转为异步
  • 16.8.1 异常处理
  • 16.8.2 使用supplyAsync简化代码
  • 第17章 模块化
  • 17.1 为什么需要模块化
  • 17.1.1 体积大
  • 17.1.2 访问控制粒度不够细
  • 17.1.3 依赖地狱
  • 17.2 用模块化开发和设计Java应用
  • 17.2.1 模块的声明
  • 17.2.2 模块的零件
  • 17.2.3 模块描述
  • 17.2.4 平台模块
  • 第18章 响应式编程
  • 18.1 响应式编程概述
  • 18.1.1 Flow Control的几种解决方案
  • 18.1.2 Pull、Push与Pull-Push
  • 18.1.3 Flow API与Stream API
  • 18.2 Flow API
  • 18.2.1 订阅者Subscriber
  • 18.2.2 Subscriber示例
  • 18.2.3 发布者Publisher
  • 18.2.4 订阅Subscription
  • 18.2.5 处理器Processor
  • 18.3 实战:响应式编程综合示例
  • 18.3.1 定义Subscriber
  • 18.3.2 定义Publisher
  • 18.3.3 运行应用
  • 参考文献
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

清华大学出版社

清华大学出版社成立于1980年6月,是由教育部主管、清华大学主办的综合出版单位。植根于“清华”这座久负盛名的高等学府,秉承清华人“自强不息,厚德载物”的人文精神,清华大学出版社在短短二十多年的时间里,迅速成长起来。清华大学出版社始终坚持弘扬科技文化产业、服务科教兴国战略的出版方向,把出版高等学校教学用书和科技图书作为主要任务,并为促进学术交流、繁荣出版事业设立了多项出版基金,逐渐形成了以出版高水平的教材和学术专著为主的鲜明特色,在教育出版领域树立了强势品牌。