128 次查看
JShell 基于 Java 9 中引入的 REPL(读取-评估-打印-循环)。此工具可用于执行简单语句、评估它并打印结果。switch 语句可以像 else 子句一样测试多个条件,并处理默认可能性。当没有一个 case 匹配时,可以执行 default 子句,并且可以使用 break 语句在成功匹配后退出 switch。在下面的代码片段中,我们可以在 JShell 中定义 switch 语句。片段 1jshell> int i = 10; i ==> 10 jshell> switch(i) { ...> case 1 ... 阅读更多
201 次查看
JShell 是一个交互式工具,它以简单语句、表达式等作为输入,对其进行评估,并将结果立即打印给用户。终端操作是一个流操作,它以流作为输入,不返回任何输出流。例如,可以将终端操作应用于 lambda 表达式并返回单个结果(单个基本值/对象或单个对象集合)。reduce()、max() 和 min() 方法是一些此类终端操作。在下面的代码片段中,我们可以使用不同的终端操作:在 JShell 中使用 min()、max() 和 reduce() 方法。片段jshell> IntStream.range(1, 11).reduce(0, (n1, n2) -> n1 + n2); $1 ... 阅读更多
407 次查看
Java 9 添加了 StackWalker 类以提供访问当前线程堆栈的标准 API。在以前的 Java 版本中,我们可以使用 Throwable::getStackTrace、Thread::getStackTrace 和 SecurityManager::GetClassContext 提供的方法来获取线程堆栈。Thread.getStackTrace() 方法将返回一个堆栈跟踪元素数组,表示线程的堆栈转储 (StackTraceElement[])。数组的第一个元素表示堆栈的顶部,它可能是序列中的最后一个方法调用,数组的最后一个元素表示堆栈的底部,它可能是序列中的第一个方法调用。语法public StackTraceElement[] ... 阅读更多
253 次查看
JShell 是 Java 9 中引入的一个工具,它接受表达式、变量、方法、类等简单语句作为输入并产生即时结果。流是一系列值。中间流操作是一个获取流的操作。例如,它可以应用于 lambda 表达式并生成另一个元素流作为其结果。下面提到了最流行的中间流操作:1) sorted():此方法保留消耗流的元素作为结果,但也将它们按自然排序顺序排列。2) distinct():此方法返回一个流,仅保留输入的唯一元素... 阅读更多
527 次查看
JShell 是 Java 9 中引入的 REPL(读取-评估-打印-循环)交互式工具,它获取输入、对其进行评估并将输出返回给用户。java.util.LocalDate 类提供许多方法来检索日期信息:日/月/年和相关的属性日期元信息:例如是否为闰年的分类相关信息等。LocalDate 类是不可变的,我们可以使用提供的方法添加和减去天、月和年。这些方法中的每一个都返回一个新的 LocalDate 实例。在下面的两个代码片段中,我们可以能够使用 LocalDate 类打印不同的操作。片段 1jshell> import java.time.*; jshell> LocalDate today = LocalDate.now() today ==> 2020-04-22 jshell> today.getYear() $3 ==> ... 阅读更多
618 次查看
发布者是无限数量的有序元素的提供者,根据其订阅者收到的需求发布它们。Publisher 接口负责发布类型为 T 的元素,并为订阅者提供 subscribe() 方法以连接到它。public interface Publisher { public void subscribe(Subscriber
135 次查看
JShell 已在 Java 9 中引入,使我们能够探索、发现和试验 Java 语言特性和广泛的库。关系运算符(==、!=、=)主要用于比较。它接受非布尔基本数据类型的操作数并返回布尔值。JShell 还支持逻辑运算符,这些运算符可用于表达式中。逻辑运算符可以期望布尔操作数。涉及这些操作数的表达式可用于在 if、for 和 while 语句中的代码中形成布尔条件。逻辑运算符包括:“&&:逻辑 AND”、“||:OR”和“!:NOT”。在下面的两个代码片段中,我们可以... 阅读更多
282 次查看
订阅可以由恰好一个发布者和一个订阅者共享,以用于协调数据交换。这就是 subscribe() 方法不返回创建的订阅,而是返回 void 的原因。订阅仅通过 onSubscribe() 方法回调传递给订阅者。Subscription 接口包含两个方法:request() 和 cancel()。语法public interface Subscription { public void request(long n); public void cancel(); }Subscription 接口的规则:Subscription.request() 和 Subscription.cancel() 方法必须仅在其订阅者上下文中调用。Subscription 必须允许订阅者从 onNext() 或 onSubscribe() 方法中同步调用 Subscription.request() 方法。Subscription.request() 方法必须放置一个上限... 阅读更多
92 次查看
任何可以用 @Deprecated 注释的元素都表示不再使用此特定元素,原因如下:使用它有风险,可能会导致错误。在将来的版本中可能不兼容。在将来的版本中可能会删除。更好的、更高效的解决方案已取代它。Java 9 添加了两个新元素:since 和 forRemoval 属性。1) since:该元素指定带注释的 API 元素的已弃用版本。2) forRemoval:表示带注释的 API 元素可以在将来的版本中删除,并且可以迁移 API。以下网页是 Java 9 中 Boolean 类的文档。@Deprecated 注解... 阅读更多
1K+ 次查看
try-with-resources 语句在 Java 9 中得到了改进。如果我们已经有了一个最终的或等效于最终变量的资源,那么我们可以在 try-with-resources 语句中使用该变量,而无需在 try-with-resources 语句中声明一个新变量。我们可以在 try 块中声明多个资源。Try 初始化块可以具有任意数量的资源,从而导致空资源或非空资源。在下面的示例中,我们可以在 try-with-resources 语句中声明多个资源。示例import java.io.BufferedReader; import java.io.IOException; import java.io.Reader; import java.io.StringReader; public class MultipleResourcesTest { public static void main(String args[]) throws ... 阅读更多