以下资源包含有关 Java 8 的其他信息。请使用它们以获得有关此主题的更深入的知识。
Java 8 - 概述 JAVA 8 是JAVA 编程语言开发的一大特色版本。其初始版本于 2014 年 3 月 18 日发布。随着 Java 8 的发布,Java 提供了对函数式编程、新的 JavaScript 引擎、用于日期时间操作的新 API、新的流 API 等的支持。 新功能 Lambda 表达式 − 为Java增加函数式处理能力。 方法参考 - 通过名称引用函数而不是直接调用它们。使用函数作为参数。 默认方法 − 具有默认方法实现的接口。 新工具 - 添加了新的编译器工具和实用程序,如“jdeps”以找出依赖关系。 流 API − 新的流 API 以促
Java 8 问答 旨在帮助学生和专业人士准备各种认证考试 和工作面试 .本部分提供了一系列有用的样本面试问题和多项选择题 (MCQ) 及其答案,并附有适当的解释。 SN 问题/答案类型 1 Java 8 面试题 本节提供了大量 Java 8 面试问题,答案隐藏在一个盒子里,让您在发现正确答案之前试一试。 2 Java 8 在线测验 本节在单个页面上提供了大量 Java 8 多项选择题 (MCQ) 及其正确答案和解释。如果您选择正确的选项,它会变成绿色;否则红色。 3 Java 8 在线测试 如果您正准备参加 Java 和 Java 8 相关的认证考试,那么此部分是您必须的。本
在 Java 8 中,Base64 终于得到了应有的回报。 Java 8 现在具有用于 Base64 编码的内置编码器和解码器。在Java 8中,我们可以使用三种Base64编码。 简单 − 输出映射到位于 A-Za-z0-9+/ 中的一组字符。编码器不会在输出中添加任何换行符,并且解码器拒绝除 A-Za-z0-9+/ 之外的任何字符。 网址 − 输出映射到位于 A-Za-z0-9+_ 中的字符集。输出是 URL 和文件名安全的。 MIME − 输出映射为 MIME 友好格式。输出以每行不超过 76 个字符的行表示,并使用回车 \r 后跟换行符 \n 作为行分隔符。编码输出的
Java 8 引入了一个新的日期时间 API,以弥补旧日期时间 API 的以下缺点。 不是线程安全的 − java.util.Date 不是线程安全的,因此开发人员在使用日期时必须处理并发问题。新的日期时间 API 是不可变的,并且没有 setter 方法。 糟糕的设计 − 默认日期从1900 开始,月从1 开始,日从0 开始,因此没有统一性。旧 API 对日期操作的直接方法较少。新的 API 为此类操作提供了大量实用方法。 时区处理困难 − 开发人员必须编写大量代码来处理时区问题。新 API 的开发考虑到了特定领域的设计。 Java 8 在 java.time 包下引
在 Java 8 中,引入了一个大大改进的 javascript 引擎 Nashorn,以取代现有的 Rhino。 Nashorn 的性能提高了 2 到 10 倍,因为它直接在内存中编译代码并将字节码传递给 JVM。 Nashorn 使用 Java 7 中引入的调用动态特性来提高性能。 jjs 对于 Nashorn 引擎,JAVA 8 引入了一个新的命令行工具,jjs, 在控制台执行javascript代码。 解释js文件 创建并保存文件 sample.js JAVA 文件夹中。 sample.js print(Hello World!); 打开控制台并使用以下命令。 jjs sampl
Optional 是一个容器对象,用于包含非空对象。可选对象用于表示没有值的空值。这个类有各种实用方法来帮助代码将值处理为“可用”或“不可用”,而不是检查空值。它是在 Java 8 中引入的,类似于 Guava 中的 Optional。 类声明 以下是 java.util.Optional 的声明 类 - public final class Optional extends Object 类方法 Sr.No. 方法和说明 1 静态 可选 empty() 返回一个空的 Optional 实例。 2 布尔等于(对象对象) 指示其他对象是否“等于”此 Optional。
Stream 是 Java 8 中引入的一个新的抽象层。使用 stream,您可以以类似于 SQL 语句的声明方式处理数据。例如,考虑以下 SQL 语句。 SELECT max(salary)、employee_id、employee_name FROM Employee 上述 SQL 表达式自动返回最高工资员工的详细信息,而无需在开发人员端进行任何计算。在 Java 中使用集合框架,开发人员必须使用循环并进行重复检查。另一个问题是效率;由于可以轻松使用多核处理器,Java 开发人员必须编写非常容易出错的并行代码处理。 为了解决这些问题,Java 8 引入了流的概念,让开发人员能够以声明方
Java 8 在接口中引入了默认方法实现的新概念。添加此功能是为了向后兼容,以便可以使用旧接口来利用 Java 8 的 lambda 表达式功能。 例如,“List”或“Collection”接口没有“forEach”方法声明。因此,添加这样的方法只会破坏集合框架的实现。 Java 8 引入了默认方法,使得List/Collection 接口可以有forEach 方法的默认实现,实现这些接口的类不需要实现相同的方法。 语法 公共接口车辆 { default void print() { System.out.println(我是一辆车!); }} 多个默认值 对于接口中的默认函数,一个类有
函数式接口只有一个功能可以展示。例如,具有单一方法“compareTo”的 Comparable 接口用于比较目的。 Java 8 定义了许多函数式接口,可在 lambda 表达式中广泛使用。以下是 java.util.Function 包中定义的函数式接口列表。 下面给出的是Java8中的接口列表。 Sr.No. 界面和说明 1 BiConsumer 表示接受两个输入参数且不返回结果的操作。 2 BiFunction 表示接受两个参数并产生结果的函数。 3 二元运算符 表示对两个相同类型的操作数的操作,产生与操作数相同类型的结果。 4 BiPredi
方法引用有助于通过名称指向方法。使用“::”符号描述方法引用。方法引用可用于指向以下类型的方法 - 静态方法 实例方法 使用 new 运算符的构造函数 (TreeSet::new) 方法参考示例 JAVA 中创建以下 Java 程序。 Java8Tester.java import java.util.List;import java.util.ArrayList;public class Java8Tester { public static void main(String args[]) { List names =new ArrayList(); names.add(Mahesh
Lambda 表达式是 Java 8 中引入的,被吹捧为 Java 8 的最大特点。Lambda 表达式方便了函数式编程,大大简化了开发。 语法 一个 lambda 表达式的特点是以下语法。 表达式主体 以下是 lambda 表达式的重要特征。 可选类型声明 − 无需声明参数的类型。编译器可以从参数的值中推断出相同的内容。 参数周围的可选括号 − 无需在括号中声明单个参数。多个参数需要括号。 可选的大括号 − 表达式体中如果只包含一条语句,则无需在表达式体中使用大括号。 可选的返回关键字 − 如果主体具有单个表达式来返回值,则编译器会自动返回该值。需要花括号来表示
本地环境设置 如果您想为 Java 编程语言设置自己的环境,那么本节将指导您完成整个过程。请按照以下步骤设置您的 Java 环境。 Java SE 可以从以下链接免费下载 - https://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html 您根据您的操作系统下载一个版本。 按照说明下载 Java,然后运行 .exe 在您的机器上安装 Java。在您的机器上安装 Java 后,您需要设置环境变量以指向正确的安装目录。 为 Windows 2000/XP 设置路径 假设您已经在 c:\Pr
JAVA 8 是JAVA 编程语言开发的一大特色版本。其初始版本于 2014 年 3 月 18 日发布。随着 Java 8 的发布,Java 提供了对函数式编程、新的 JavaScript 引擎、用于日期时间操作的新 API、新的流 API 等的支持。 新功能 Lambda 表达式 − 为Java增加函数式处理能力。 方法参考 - 通过名称引用函数而不是直接调用它们。使用函数作为参数。 默认方法 − 具有默认方法实现的接口。 新工具 - 添加了新的编译器工具和实用程序,如“jdeps”以找出依赖关系。 流 API − 新的流 API 以促进管道处理。 日期时
CompletableFuture 类是在 Java 8 中引入的,用于表示可以通过显式设置其值和状态来完成的 Future。它可以用作 java.util.concurrent.CompletionStage。它支持在未来完成时触发的依赖功能和动作。在 Java 9 CompletableFuture API 中得到了进一步增强。以下是对 API 所做的相关更改。 支持延迟和超时。 改进了对子类化的支持。 添加了新的工厂方法。 支持延迟和超时 public CompletableFuture completeOnTimeout(T value, long timeout, TimeUni
在 Java 9 中,引入了一个新的多分辨率图像 API,它支持具有不同分辨率变体的多个图像。此 API 允许将一组不同分辨率的图像用作单个多分辨率图像。以下是多分辨率图像的主要操作。 Image getResolutionVariant(double destImageWidth, double destImageHeight) - 获取一个特定的图像,它是在指定大小下表示此逻辑图像的最佳变体。 List getResolutionVariants() − 获取所有分辨率变体的可读列表。 示例 import java.io.IOException;import java.ne
Java 8 中引入了 Optional Class 以避免空检查和 NullPointerException 问题。在 java 9 中,添加了三个新方法以改进其功能。 流() ifPresentOrElse() or() stream() 方法 语法 公共流 stream() 如果存在值,则返回仅包含该值的顺序流,否则返回空流。 示例 import java.util.Arrays;import java.util.List;import java.util.Optional;import java.util.stream.Collectors;import java.util.st
菱形运算符是在 Java 7 中引入的,以使代码更具可读性,但它不能与匿名内部类一起使用。在 java 9 中,它也可以与匿名类一起使用,以简化代码并提高可读性。考虑以下 Java 9 之前的代码。 Tester.java 现场演示public class Tester { public static void main(String[] args) { Handler intHandler =new Handler(1) { @Override public void handle() { System .out.println(内容); } }; intHandler.handle();
@Deprecated 注解是在 java 5 版本中引入的。用@Deprecated 注释的程序元素意味着它不应该用于以下任何原因 - 它的使用可能会导致错误。 在未来的版本中可能会不兼容。 它可能会在未来版本中删除。 更好、更有效的替代方案取代了它。 每当使用不推荐使用的元素时,编译器都会生成警告。在 Java 9 中,对 @Deprecated 注释进行了两项新的增强。 移除 - 指示注释元素在未来版本中是否会被删除。默认值为false。 自从 - 返回注释元素被弃用的版本。默认值为空字符串。 已弃用 以下 Java 9 上的 Boolean 类 javadoc
try-with-resources 语句是带有一个或多个适当声明的资源的 try 语句。这里的资源是一个对象,一旦不再需要它就应该关闭。 try-with-resources 语句确保在需求完成后关闭每个资源。任何实现 java.lang.AutoCloseable 或 java.io.Closeable 接口的对象都可以作为资源使用。 在 Java 9 之前,资源将在 try 或 try 语句内声明,如下面的给定示例所示。在本例中,我们将使用 BufferedReader 作为资源读取字符串,然后关闭 BufferedReader。 Tester.java 现场演示import jav
java