Java核心编程

Java核心编程

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

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 运行应用

参考文献

Java核心编程是2020年由清华大学出版社出版,作者柳伟卫。

得书感谢您对《Java核心编程》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
深入浅出WindowsAPI程序设计:核心编程篇 电子书
本书基于win 10和VS 2019编写,系统地介绍了Windows程序设计的核心编程思想与实践。
Java基础案例教程 电子书
传智播客经典图书的延续。本书采用章节 案例的编写方式,除第1章外,其他章节均加入案例讲解,总计20个案例,达到“边做边学”的效果,提供免费教学资源,包括11 个精美教学PPT、1300 道测试题、长达37 小时的教学视频等。
Java架构师指南 电子书
知名Java专家多年经验总结,介绍从程序员进阶到架构师需要具备的技能的完整教程 基于Java官方API的解读,从架构师的独特角度讲解Java知识和技能 企业级开发的经典示例,全程项目驱动,涵盖电商支付接口的综合调试 程序员走向架构师是必经之路。本书基于Java官方API进行解读,从架构师的角度讲解Java知识和技能,并从搭建虚拟机开始,学习常用的Linux命令,力争使程序员能在较短的时间内成功迈入架构师的殿堂。 近年来编程领域的知识愈加丰富,使广大程序员应接不暇。如何在有限的时间内高效学习是一个棘手的问题。本书作者根据自身的丰富经验,精选了Java中必须掌握的核心技能,并以项目为驱动,循序渐进,详细讲解了企业级项目和电商平台,让读者在学习知识的同时以实战加深印象,可谓是高屋建瓴。 如何能在短时间内达到架构师的水平?面对难以入手的海量知识,读者往往一头雾水,相信通过阅读本书,每位读者都能从中找到答案。
Java Web云应用开发 电子书
本书以开源的OpenStack技术为基础,按照“任务驱动、能力递进”的思路,以“Web云网盘项目”的开发为主线,全面介绍了使用JavaWeb技术开发Web云网盘系统的方法和主要步骤。本书将Web云网盘的项目分解为Web云网盘概要设计、开发环境搭建、JavaEE基础知识、云存储OpenStackSwift服务构建、开发登录注册模块、开发文件列表模块、开发文件操作模块、开发功能扩展模块、部署发布9个子
Java程序设计基础 电子书
本书较为全面地介绍了Java程序开发的相关基础知识。全书共8章,主要讲解了Java语言概述、Java基础语法、数组、面向对象程序设计——类和对象、类的继承、类的多态性、异常处理和常用的Java类。在各章节的末尾设置了实践任务、本章小结和习题练习等环节,帮助读者巩固所学的内容。本书可以作为高职高专院校计算机相关专业Java程序开发基础课程的教材使用,也适合相关专业初学者和广大计算机爱好者自学使用。