# Java SE 8 升级考试

> 原文： [https://docs.oracle.com/javase/tutorial/extra/certification/javase-8-upgrade.html](https://docs.oracle.com/javase/tutorial/extra/certification/javase-8-upgrade.html)

此页面将 Java 教程中的部分映射到升级到 Java SE 8 OCP（Oracle 认证专业人员）（Java SE 6 和所有先前版本）和升级 Java SE 7 到 Java SE 8 OCP 考试中涵盖的主题。这些考试与 Oracle Certified Professional，Java SE 8 Programmer 证书相关联。

## 升级到 Java SE 8 OCP（Java SE 6 及所有先前版本）

本次考试涉及的主题是：

1.  [语言增强](#language6)
2.  [并发](#concurrency6)
3.  [本地化](#localization6)
4.  [Java 文件 I / O（NIO.2）](#nio26)
5.  [Lambda](#lambda6)
6.  [Java Collections](#collections6)
7.  [Java Streams](#streams6)

**第 1 项：**开发在`开关`语句，二进制文字和数字文字中使用 `String` 对象的代码，包括文字中的下划线

*   [开关声明](../../java/nutsandbolts/switch.html)
*   [原始数据类型](../../java/nutsandbolts/datatypes.html)
*   [原始数据类型](../../java/nutsandbolts/datatypes.html)

**第 2 项：**开发使用 `try` -with-resources 语句的代码，包括使用实现 `AutoCloseable` 接口的类

*   [试用资源声明](../../essential/exceptions/tryResourceClose.html)

**第 3 项：**开发在单个 `catch` 块中处理多个`异常`类型的代码

*   [`catch`块](../../essential/exceptions/catch.html)

**第 4 项：**使用接口的静态和默认方法，包括默认方法的继承规则

*   [默认方法](../../java/IandI/defaultmethods.html)

**第 1 项：**使用来自 `java.util.concurrent` 包的类，包括 `CyclicBarrier` 和 `CopyOnWriteArrayList` ，重点是优势和差异来自传统的 `java.util` 集合

**第 2 项：**在 `java.util.concurrent.locks` 中使用`锁定`， `ReadWriteLock` 和 `ReentrantLock` 类和 `java.util.concurrent.atomic` 包支持单变量的无锁线程安全编程

*   [原子变量](../../essential/concurrency/atomicvars.html)

**第 3 项：**使用`执行者`， `ExecutorService` ，`执行者`，`可调用`和 `Future` 使用线程池执行任务

*   [执行器接口](../../essential/concurrency/exinter.html)

**第 4 项：**使用并行 Fork / Join 框架

*   [叉/加入](../../essential/concurrency/forkjoin.html)

**第 1 项：**描述本地化应用程序和开发使用 `Locale` 对象定义，读取和设置语言环境的代码的优点

*   [简介](../../i18n/intro/index.html)

*   [创建区域设置](../../i18n/locale/create.html)

**第 2 项：**为区域设置构建资源包并从应用程序调用资源包

*   [隔离特定于区域设置的数据](../../i18n/resbundle/index.html)

**第 3 项：**使用 `LocalDate` ， `LocalTime` ， `LocalDateTime` ， `Instant [创建和管理基于日期和时间的事件 HTG9]， `Period` 和 `Duration` ，包括单个对象中日期和时间的组合`

*   [日期类](../../datetime/iso/date.html)
*   [日期和时间类](../../datetime/iso/datetime.html)
*   [即时班](../../datetime/iso/instant.html)
*   [期间和持续时间](../../datetime/iso/period.html)

**第 4 项：**使用 `NumberFormat` 和 `DateFormat` 类格式化日期，数字和货币值，包括数字和日期格式模式

*   [数字和货币](../../i18n/format/numberintro.html)
*   [日期和时间](../../i18n/format/dateintro.html)

**第 5 项：**处理跨时区的日期和时间，并管理夏令时产生的变化

*   [时区和偏移类](../../datetime/iso/timezones.html)

**第 1 项：**使用 `java.nio.Path` 类在文件和目录路径上操作

*   [路径操作](../../essential/io/pathOps.html)

**第 2 项：**使用 `java.nio.Files` 类检查，删除，复制或移动文件或目录

*   [检查文件或目录](../../essential/io/check.html)
*   [删除文件或目录](../../essential/io/delete.html)
*   [复制文件或目录](../../essential/io/copy.html)
*   [移动文件或目录](../../essential/io/move.html)

**项目 3：**使用 `DirectoryStream` 和 `FileVisitor` 接口递归访问目录树

*   [创建和阅读目录](../../essential/io/dirs.html)
*   [走文件树](../../essential/io/walk.html)

**第 4 项：**使用 PathMatcher 接口查找文件，并使用 Java SE 8 I / O 改进，包括 `Files.find` ， `Files.walk` ，以及 `Files.lines 方法`

*   [查找文件](../../essential/io/find.html)
*   [走文件树](../../essential/io/walk.html)

**项目 5：**使用 `WatchService` 界面观察目录中的更改

*   [观看目录变更](../../essential/io/notification.html)

[Lambda 表达式](../../java/javaOO/lambdaexpressions.html)和[聚合操作](../../collections/streams/index.html)部分涵盖以下某些项目：

**第 1 项：**定义和编写函数式接口并描述 `java.util.function` 包的接口

**第 2 项：**描述一个 lambda 表达式;重构使用匿名内部类来使用 lambda 表达式的代码;描述类型推断和目标类型

**第 3 项：**开发使用 `java.util.function` 包中包含的内置接口的代码，例如`函数`， `Consumer` ]，`供应商`， `UnaryOperator` ， `Predicate` 和`可选` API，包括接口的原始和二进制变体

**第 4 项：**开发使用方法引用的代码，包括将 lambda 表达式重构为方法引用

[Lambda 表达式](../../java/javaOO/lambdaexpressions.html)和[聚合操作](../../collections/streams/index.html)部分涵盖以下某些项目：

**第 1 项：**开发使用菱形和通用声明的代码

*   [钻石](../../java/generics/types.html#diamond)

**第 2 项：**开发代码，迭代集合，过滤集合，并使用 lambda 表达式对集合进行排序

**第 3 项：**使用 `findFirst` ， `findAny` ， `anyMatch` ， `allMatch` 等方法搜索数据，和 `noneMatch`

**项目 4：**使用`计数`， `max` ， `min` ，`平均值`和对 Java 流进行计算 HTG10]汇总方法并使用 `collect` 方法和 `Collector` 类将结果保存到集合中，包括 `averagingDouble` ， `groupingBy` ]，`加入`和`分区`方法

**第 5 项：**开发使用 Java SE 8 集合改进的代码，包括 `Collection.removeIf` ， `List.replaceAll` ， `Map.computeIfAbsent` ，和 `Map.computeIfPresent` 方法

**第 6 项：**开发在 Java 流上使用`合并`， `flatMap` 和 `map` 方法的代码

[Lambda 表达式](../../java/javaOO/lambdaexpressions.html)和[聚合操作](../../collections/streams/index.html)部分涵盖以下某些项目：

**第 1 项：**描述`流`接口和流水线;使用 `Arrays.stream` 和 `IntStream.range` 方法创建流;识别懒惰的 lambda 操作

**项目 2：**开发使用并行流的代码，包括流中的分解操作和缩减操作

## 将 Java SE 7 升级到 Java SE 8 OCP 程序员

本次考试涉及的主题是：

1.  [Lambda 表达式](#lambda7)
2.  [使用内置 Lambda 类型](#builtinlambda7)
3.  [带有 Lambdas 的 Java 集合和流](#collectionslambda7)
4.  [Lambda](#collectionoperations7) 的收集操作
5.  [并行流](#parallel7)
6.  [Lambda Cookbook](#lambdacookbook7)
7.  [方法增强](#methodenhancements)
8.  [使用 Java SE 8 日期/时间 API](#datetime7)

**第 1 项：**描述和开发使用 Java 内部类的代码，包括嵌套类，静态类，本地类和匿名类

*   [嵌套类](../../java/javaOO/nested.html)
*   [本地类](../../java/javaOO/localclasses.html)
*   [匿名类](../../java/javaOO/anonymousclasses.html)
*   [何时使用嵌套类，本地类，匿名类和 Lambda 表达式](../../java/javaOO/whentouse.html)

**第 2 项：**描述和编写函数式接口

[Lambda Expressions](../../java/javaOO/lambdaexpressions.html)

**项目 3：**描述一个 lambda 表达式;重构使用匿名内部类来使用 lambda 表达式的代码;描述类型推断和目标类型

[Lambda Expressions](../../java/javaOO/lambdaexpressions.html)

[Lambda 表达式](../../java/javaOO/lambdaexpressions.html)和[聚合操作](../../collections/streams/index.html)部分涵盖以下某些项目：

**第 1 项：**描述 java.util.function 包的接口

**第 2 项：**开发使用 Function 接口的代码

**第 3 项：**开发使用 Consumer 接口的代码

**第 4 项：**开发使用 Supplier 接口的代码

**第 5 项：**开发使用 UnaryOperator 接口的代码

**第 6 项：**开发使用 Predicate 接口的代码

**第 7 项：**开发使用 java.util.function 包的基接口的原始和二进制变体的代码

**项目 8：**开发使用方法引用的代码，包括将 lambda 表达式重构为方法引用

[Lambda 表达式](../../java/javaOO/lambdaexpressions.html)和[聚合操作](../../collections/streams/index.html)部分涵盖以下某些项目：

**第 1 项：**开发使用 forEach（）方法和方法链接迭代集合的代码

**第 2 项：**描述 Stream 接口和流水线

**第 3 项：**使用 lambda 表达式过滤集合

**第 4 项：**识别正在运行的懒惰操作

###  的收集操作

[Lambda 表达式](../../java/javaOO/lambdaexpressions.html)和[聚合操作](../../collections/streams/index.html)部分涵盖以下某些项目：

**项目 1：**开发代码，使用 map（）方法从对象中提取数据

**第 2 项：**使用 findFirst（），findAny（），anyMatch（），allMatch（）和 noneMatch（）等方法搜索数据

**第 3 项：**描述 Optional 类的独特特征

**第 4 项：**使用 Java Stream 方法执行计算，例如 count（），max（），min（），average（）和 sum（）

**第 5 项：**使用 lambda 表达式对集合进行排序

**第 6 项：**开发使用 Stream.collect（）方法和 Collectors 类方法的代码，例如 averagingDouble（），groupingBy（），join（）和 partitioningBy（）

**第 1 项：**开发使用并行流的代码

[Parallelism](../../collections/streams/parallelism.html)

**第 2 项：**实现流的分解和减少

[Reduction](../../collections/streams/reduction.html)

**第 1 项：**开发使用 Java SE 8 集合改进的代码，包括 Collection.removeIf，List.replaceAll，Map.computeIfAbsent 和 Map.computeIfPresent 方法

**第 2 项：**开发使用 Java SE 8 I / O 改进的代码，包括 Files.find，Files.walk 和 Files.lines 方法

**第 3 项：**在 Stream API 中使用 flatMap（）方法

**项目 4：**开发使用 Arrays.stream（）和 IntStream.range（）方法创建流的代码

**第 1 项：**向接口添加静态方法

[Static Methods](../../java/IandI/defaultmethods.html#static)

**第 2 项：**定义并使用接口的默认方法并描述默认方法的继承规则

[Default Methods](../../java/IandI/defaultmethods.html) [Overriding and Hiding Methods](../../java/IandI/override.html)

**第 1 项：**使用 LocalDate，LocalTime，LocalDateTime，Instant，Period 和 Duration，创建和管理基于日期和时间的事件，包括单个对象中日期和时间的组合

*   [日期类](../../datetime/iso/date.html)
*   [日期和时间类](../../datetime/iso/datetime.html)

**第 2 项：**处理跨时区的日期和时间，并管理夏令时产生的变化，包括格式日期和时间值

*   [时区和偏移类](../../datetime/iso/timezones.html)

**第 3 项：**使用 Instant，Period，Duration 和 TemporalUnit 定义，创建和管理基于日期和时间的事件

*   [即时班](../../datetime/iso/instant.html)
*   [时间包](../../datetime/iso/temporal.html)
*   [期间和持续时间](../../datetime/iso/period.html)