199 次浏览
REPL 代表读取-求值-打印-循环。它包含一些状态,JShell 中的每个语句都有一个状态。此状态会拒绝代码片段和变量的执行状态。可以通过 JShell 实例的 eval() 方法的结果来确定,该方法会评估代码。以下是七种不同的状态:DROPPED:代码片段处于非活动状态。NONEXISTENT:代码片段处于非活动状态,因为它尚不存在。OVERWRITTEN:代码片段处于非活动状态,因为它已被新的代码片段替换。RECOVERABLE_DEFINED:代码片段是一个声明代码片段,其主体可能存在可恢复的未解析引用或其他问题。RECOVERABLE_NOT_DEFINED:代码片段是一个声明代码片段,…… 阅读更多
81 次浏览
Java Shell(简称 JShell)是一个用于学习 Java 和原型设计 Java 代码的 REPL 交互式工具。它会评估输入的声明、语句和表达式,并立即打印结果,并从命令行运行。封装是 Java 中的一个重要概念,用于确保“敏感”数据对用户隐藏。为此,我们必须将类变量声明为私有,并提供公共 get 和 set 方法来访问和更新私有变量的值。在下面的代码片段中,我们为 Employee 类实现了封装概念。jshell> class Employee { ...> private String firstName; ...> ... 阅读更多
175 次浏览
在 Java 9 中,引入了一项名为“多版本 jar 格式”的新特性,其中 jar 格式增强了可以根据平台维护和使用的不同版本的 Java 类或资源。可以使用 jar 命令来创建一个多版本 jar,其中包含为 Java 8 和 Java 9 版本编译的同一类的两个版本,并显示一条警告消息,说明这两个类是相同的。C:\Users\User\tutorialspoint>jar --create --file MR.jar -C sampleproject-base demo --release 9 -C sampleproject-9 demo 警告:条目 META-INF/versions/9/demo/SampleClass.class 包含一个与 jar 中已有的条目相同的类。“ --release 9”选项可以告诉 jar ... 阅读更多
121 次浏览
JShell 是作为 Java 9 的一部分引入的第一个 REPL(读取-求值-打印-循环)交互式工具。它会评估输入的声明、语句和表达式,并立即显示结果,它从命令行提示符运行。回文字符串是一个字符串,当反转时它保持不变,或者单词在前后方向上的拼写方式相同。在下面的示例中,我们可以在 JShell 工具中检查给定的字符串是否为回文。C:\Users\User>jshell | 欢迎使用 JShell -- 版本 9.0.4 | 要查看介绍,请输入:/help intro jshell> String str="LEVEL"; str ==> "LEVEL" jshell> ... 阅读更多
94 次浏览
在 Java 9 中,可以通过本地调用检索进程的 PID,并且可以通过 ProcessHandle 实现。我们还可以检索有关当前正在运行的 Java 进程 (JVM) 和包含进程详细信息的 Info(ProcessHandle 的内部类)的信息。我们还可以返回系统中所有当前正在运行的进程的快照。示例import java.lang.ProcessHandle.Info; public class ProcessAPIChanges { public void detailedAPIInfo(ProcessHandle processHandle) { Info processInfo = processHandle.info(); System.out.println("下面提供详细的进程信息:"); System.out.println("[可执行文件名] " + processInfo.command().get()); System.out.println("[用户名] " + ... 阅读更多
140 次浏览
JShell 是一个用于学习 Java 语言和原型设计 Java 代码的交互式工具。它是一个 REPL(读取-求值-打印-循环),它在输入后立即评估声明、语句和表达式,并在 JShell 中打印结果。此工具从命令行提示符运行。public、protected、private、static 和 final 等修饰符不允许在顶级声明中使用,并且可以忽略并显示警告。synchronized、native、abstract 和 default 顶级方法等关键字不允许使用,并且会导致错误。在下面的代码片段中,我们创建了 final 和 static 变量。它向用户打印出一条警告消息,“不允许使用修饰符'final'或'static' ... 阅读更多
200 次浏览
MethodHandles 类在 Java 7 版本中引入。此类主要添加了一些静态方法来改进功能,并分为几类,例如 Lookup 方法,用于为方法和字段创建方法句柄;组合器方法,用于将预先存在的方法句柄组合或转换为新的方法句柄;以及工厂方法,用于创建模拟其他常用 JVM 操作或控制流模式的方法句柄。MethodHandles 类在 Java 9 中得到了增强,引入了许多更改并添加了新的静态方法,例如 arrayLength()、arrayConstructor()、zero() 等。语法public class MethodHandles extends Object示例import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; public class MethodHandlesTest { public void MethodHandle1() { ... 阅读更多
150 次浏览
StackWalker API 是 Java 9 中的一项新特性,它提高了前代堆栈跟踪元素的性能。它还可以提供一种方法来过滤异常情况下的堆栈元素,或了解应用程序行为。在 Java 9 中,访问堆栈跟踪的方法非常有限,并且一次提供所有堆栈信息。在下面的示例中,我们需要打印 Stack Frame 中的所有属性示例import java.lang.StackWalker.StackFrame; import java.util.*; import java.util.stream.*; import java.lang.StackWalker.Option; public class AllAttributesTest { public static void main(String args[]) { System.out.println("Java 9 Stack Walker API - 打印所有 ... 阅读更多
773 次浏览
Thread.onSpinWait() 方法在 Java 9 中引入。它是 Thread 类的静态方法,可以在繁忙等待循环中选择性地调用。它允许 JVM 在某些系统架构上发出处理器指令以提高此类自旋等待循环中的反应时间,并减少核心线程消耗的功率。它可以使 Java 程序的整体功耗受益,并允许其他核心线程在相同的功耗范围内以更快的速度执行。语法public static void onSpinWait()示例public class ThreadOnSpinWaitTest { public static void main(final String args[]) throws InterruptedException { ... 阅读更多
浏览量:379
JShell工具,也称为REPL(读取-求值-打印-循环),在Java 9中引入,允许我们执行Java代码并立即获得结果。我们可以快速评估表达式或简短的算法,而无需创建新项目、编译或构建它。借助JShell,我们可以执行表达式、使用导入、定义类、方法和变量。我们可以使用“/types”命令列出当前JShell会话中定义的所有类、接口和枚举。在下面的代码片段中,我们在JShell工具中创建了“Test”类、“TestInterface”接口和枚举“EnumTest”。C:\Users\User> jshell | 欢迎使用JShell -- 版本 9.0.4 | 更多信息... 阅读更多