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”命令后,调试模式将打开。启用调试模式后,键入类似于简单的加法或简单的字符串的内容,然后它将打印如下所示。示例 1 jshell> /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