271 次浏览
JShell 是 Java 的第一个 REPL 和命令行工具,它提供了 Java 编程语言元素的交互式使用。我们可以使用此工具独立测试类的功能。JShell 在命令行中创建了一个简单易用的编程环境,它接收用户的输入,读取它并打印结果。lambda 表达式是一个函数,它是在不属于任何类的情况下创建的。在下面的示例中,我们可以在 JShell 中实现一个 lambda 表达式。C:\Users\User>jshell | 欢迎使用 JShell -- 版本 9.0.4 | 要获取简介,请键入:/help intro jshell> Consumer s = (String s) -> System.out.println(s) ... 阅读更多
466 次浏览
变量句柄是变量或一组变量的引用,包括堆数据结构中静态字段、非静态字段和其他组件的外部数组元素。这意味着变量句柄类似于现有的方法句柄。它可以使用 java.lang.invoke.VarHandle 类来表示。我们可以使用 java.lang.invoke.MethodHandles.Lookup 静态工厂方法来创建变量句柄对象。它还可以用于访问数组中的单个元素和 byte[] 数组。语法public abstract class VarHandle extends Object示例import java.lang.invoke.MethodHandles; import java.lang.invoke.VarHandle; import java.util.Arrays; public class VarHandleTest { public static void main(String args[]) { VarHandle varHandle = MethodHandles.arrayElementVarHandle(int[].class); ... 阅读更多
476 次浏览
ProcessHandle 接口在 Java 9 中引入。它允许我们执行操作并检查相关进程的状态。此接口提供进程的本机进程 ID (pid)、启动时间、累积 CPU 时间、参数、命令、用户、父进程和子进程。ProcessHandle 接口允许我们执行以下操作。它返回一个包含有关进程的更多信息的 ProcessHandle.Info 进程的 Pid 如果它还活着检索进程直接子代的快照检索进程所有后代的快照检索所有当前正在运行的进程的快照允许销毁进程它返回一个带有 ProcessHandle 的 CompletableFuture,用于... 阅读更多
398 次浏览
Http/2 客户端 API 在 Java 9 中引入。与 Http/1.1 相比,它具有更多性能改进,并且还支持服务器端推送事件。这使得网站浏览起来更高效、更快。Http/2 客户端是一个名为 jdk.incubator.httpclient 的孵化器模块,这意味着所有功能都尚未最终确定,并且在未来的 Java 版本中可能会出现新的更改。它导出包含所有公共 API 的 jdk.incubator.http 包。要使用 Http/2 客户端,我们需要使用孵化器模块,我们只需将 httpclient 模块传递到 JShell 中,如下所示 C:\>jshell -v --add-modules jdk.incubator.httpclient | 欢迎使用 JShell -- 版本 9.0.4 | 要获取简介,请键入:/help intro示例jshell> import jdk.incubator.http.*; jshell> HttpClient httpClient ... 阅读更多
304 次浏览
JShell 是一个 REPL 工具,允许在不将代码放在类中的情况下运行代码片段。此工具提供了一种在 Java 中评估声明、语句和表达式的方法,并且无需创建 main() 方法来测试代码的某些部分。命令“/debug”可用于显示 JShell 工具实现的调试信息。键入“/debug”命令后,调试模式将开启。启用调试模式并键入类似于简单加法或简单字符串的内容后,它将如下所示打印。示例-1jshell> /debug | 调试开启 jshell> 5+3 编译:5+3 类型:EXPRESSION_STATEMENT ... 阅读更多
294 次浏览
JShell 是 Java 在 Java 9 中引入的第一个官方 REPL 应用程序。它是一个工具,有助于执行和评估简单的 Java 程序和小逻辑,例如语句、简单程序、循环、表达式等。Java REPL 可以在命令行提示符下提供一个简单的编程环境。它读取输入,对其进行评估,并打印输出。在下面的示例中,我们可以使用 String 类的预定义方法来实现一个字符串。示例jshell> String str = "{abcd}"; str ==> "{abcd}" jshell> str.substring(2, str.length() - 1) $7 ==> "bcd" jshell> String s1 = new String("abcd"); s1 ==> "abcd" jshell> String s2 ... 阅读更多
443 次浏览
Java 9 可以为 JVM 组件提供一个具有详细级别的通用日志记录系统。通过使用新的命令行选项:-Xlog 用于所有日志记录设置,并且统一的 JVM 日志记录为我们提供了一个易于配置的工具来执行复杂系统级 JVM 组件的根本原因分析 (RCA)。命令行 -Xlog 可用于控制所有日志记录 JVM 组件。-Xlog 的参数遵循以下规则:命令行中出现的多个参数按顺序应用。最后配置规则:对于相同的输出,多个参数可以按给定顺序相互覆盖。Xlog: disable 关闭所有日志记录并清除所有配置... 阅读更多
435 次浏览
Java 9 的国际化增强功能包括默认启用 CLDR 语言环境数据。通过使用以下关键字,可以识别出四个不同的语言环境数据源:CLDR:Unicode 通用语言环境数据存储库 (CLDR) 项目提供的语言环境数据。HOST:当前用户对其底层操作系统的设置的自定义。根据操作系统的不同,可以支持日期、时间、数字和货币等格式。SPI:已安装的 SPI 提供程序中实现的语言环境敏感服务。COMPAT (JRE):与 Java 9 之前的版本兼容的语言环境数据。JRE 仍然可以用作值,但已弃用,将来可能会删除。在 Java ... 阅读更多
547 次浏览
从 Java 9 开始,版本控制可以与语义版本控制保持一致。版本号可以是一系列用点分隔的非空字符串。它包含三个主要部分:主版本号、次版本号和安全版本号。新的版本控制方案已在 Runtime.Version 类中记录,并且可以从其中访问版本信息。版本号具有以下格式:$MAJOR.$MINOR.$SECURITY(.$otherpart)?$MAJOR 是主版本号,在发布通常会更改平台规范的主要版本时递增。对于 JDK 9,此值为 9。$MINOR 是次版本号,在包含错误修复和增强功能的版本中递增... 阅读更多
2K+ 次浏览
在本教程中,我们将讨论一个程序来理解 C++ 中的虚函数。虚函数是在基类中定义的成员函数,也可以在子类中进一步定义。调用派生类时,将调用覆盖的函数。示例实时演示#include using namespace std; class base { public: virtual void print(){ cout