200 次查看
JShell 是 Java 9 版本中引入的一个命令行交互式工具,它允许程序员执行简单的语句、表达式、变量、方法、类、接口等,无需声明 main() 方法。在 JShell 中,编译器会通过抛出错误来警告程序员类型转换问题。但是,如果程序员知道这一点,则需要显式转换。如果我们需要将较小的数据值存储到较大的类型转换中,则需要隐式转换。整数类型转换有两种:字面量到变量赋值:例如,short s1 = 123456,数据超出范围。这在编译时已知,编译器会标记一个…… 阅读更多
324 次查看
Subscriber 接口订阅发布者以通过 onNext() 方法接收项目,通过 onError() 方法接收错误消息,或通过 onComplete() 方法接收不再期望项目的信号。在这些事情发生之前,发布者会调用 onSubscription() 方法。public interface Subscriber { public void onSubscribe(Subscription s); public void onNext(T t); public void onError(Throwable t); public void onComplete(); }Subscriber 接口规则:Subscriber 必须通过 Subscription.request(long n) 方法调用来接收 onNext() 信号。Subscriber.onComplete() 和 Subscriber.onError(Throwable t) 方法不得调用 Subscription 或 Publisher 上的任何方法。Subscriber.onComplete() 和 Subscriber.onError(Throwable t) 方法必须在收到…… 阅读更多
318 次查看
Java 9 向 Process API 添加了 ProcessHandle 接口以增强 Process 类。ProcessHandle 接口的一个实例标识一个本地进程,允许我们查询进程状态和管理进程,而 ProcessHandle.Info 允许我们使用本地代码,因为需要获取本地进程的 PID。ProcessBuilder 类可用于创建单独的操作系统进程。在下面的示例中,我们可以使用 ProcessBuilder 类创建一个“记事本”应用程序的进程。示例import java.time.ZoneId; import java.util.stream.Stream; import java.util.stream.Collectors; import java.io.IOException; public class ProcessBuilderTest { public static void main(String args[]) throws IOException { ProcessBuilder pb = new ProcessBuilder("notepad.exe"); ... 阅读更多
214 次查看
在 Java 9 之前,我们必须在谷歌搜索才能找到特定的包、类、接口和方法信息。从 Java 9 开始,Javadoc 在其 API 文档中包含搜索选项,并且输出符合 HTML5 标准。在下面的示例中,我们在“C:/JAVA”文件夹中创建了“JavaDocTest.java”文件。示例public class JavaDocTest { /** * 要运行以打印的默认方法 * Tutorialspoint * @param args 命令行参数 */ public static void main(String args[]) { System.out.println("Tutorialspoint"); } }Java 9 生成的文档…… 阅读更多
676 次查看
在 Java 9 中,一些静态方法:stream()、or() 和 ifPresentOrElse() 已添加到 Optional 类中。Optional 类的引入解决了空指针异常。Optional.or() 方法如果存在值,则返回一个描述该值的 Optional,否则返回由供应函数生成的 Optional。语法public Optional or(Supplier
429 次查看
VarHandle 是对变量的引用,它以各种访问模式(例如普通读/写、易失读/写和比较并交换)提供对变量的访问,类似于 java.util.concurrent.atomic 和 sun.misc.Unsafe 提供的功能。变量可以是数组元素、类中的实例或静态字段。在下面的示例中,我们可以创建一个静态变量句柄。示例import java.lang.invoke.MethodHandles; import java.lang.invoke.VarHandle; public class StaticVarHandleTest { static int field; static int[] array = new int[20]; static final VarHandle FIELD, ARRAY; static { try { ... 阅读更多
85 次查看
JShell 是 Java 9 中引入的一个命令行工具,它是 Java 的第一个官方 REPL 工具,用于创建一个简单的编程环境,读取用户的输入,对其进行评估并打印结果。类或接口外部的声明(以及类和接口本身的声明)是在以下规则下创建的。外部声明规则:1) 可以忽略诸如 public、protected 和 private 之类的访问修饰符。所有声明片段都可以被所有其他片段访问。jshell> private int i = 10; i ==> 10 jshell> System.out.println(i); 102) 可以忽略修饰符 final。允许更改和继承。jshell> final class A {void m() {} } ... 阅读更多
155 次查看
一般来说,变量句柄只是对变量的简单类型引用。它将是数组元素、类的实例或静态字段。VarHandle 类可以在特定条件下提供对变量的读写访问。这些是不可变的,没有可见的条件。此外,它们不能被子类化,每个 VarHandle 都有一个泛型类型 T,它是此 VarHandle 表示的每个变量的类型。VarHandle 的目标是定义一个标准,用于调用 java.util.concurrent.atomic 和 sun.misc.Unsafe 操作在字段和数组元素上的等效项。在下面的示例中,我们可以使用…… 阅读更多
696 次查看
Publisher 接口是无限数量的顺序元素的提供者,它根据从其 Subscriber(s) 收到的需求发布这些元素。响应调用 Publisher.subscribe(Subscriber),Subscriber 上方法的可能调用序列。这意味着 onSubscribe() 方法,后跟无限数量的 onNext() 方法(根据 Subscriber 的请求),后跟 onError() 方法(如果有失败)或 onComplete() 方法(当不再有元素可用时,只要 Subscription 没有被取消)。语法public interface Publisher { public void subscribe(Subscriber
225 次查看
考虑到Kotlin相较于Java的诸多改进,Kotlin被引入到Android开发中。例如:功能相同的情况下,代码行数更少,开发更容易。Java: TextView displayText = (TextView) findViewById(R.id.textView); displayText.setText("Hello World"); Kotlin: textView.setText("Hello World")编译时处理臭名昭著的空指针异常。var value: String = "abc" // 编译错误 value = null使用数据类代替POJO。data class User(val name: String, val age: Int)以下是Java和Kotlin之间一些重要的区别。序号关键点JavaKotlin1异常处理Java使用受检异常进行异常处理。Kotlin没有受检异常。它会抛出编译时错误。2空值处理Java没有强制执行空值检查,因此会出现空指针异常……阅读更多