首页 > 基础资料 博客日记
数据结构(JAVA)JDK17语法新增特性
2024-11-03 05:00:08基础资料围观65次
本篇文章分享数据结构(JAVA)JDK17语法新增特性,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识
yield关键字
yield关键字用于case的代码块中返回值。
正常switch语句
public static void main(String[] args) {
int result = 0;
String str = "a";
switch (str) {
case "a" :
result = 65;
break;
case "b" :
result = 66;
break;
case "c" :
result = 67;
break;
default:
result = -1;
}
System.out.println(result);
}
简化的switch语句
public static void main(String[] args) {
String str = "a";
int result = switch (str) {
case "a" -> 65;
case "b" -> 66;
case "c" -> 67;
default -> -1;
};
System.out.println(result);
}
yield关键字版本
public static void main(String[] args) {
String str = "a";
int result = switch (str) {
case "a" : yield 65;
case "b" : yield 66;
case "c" : yield 67;
default : yield -1;
};
System.out.println(result);
}
var关键字
var关键字可以使代码更加简洁,有时类型名称长时,就可以使用var来代替。
public static void main(String[] args) {
Map<String, List<Map<Integer, String>>> complexMap = new HashMap<String,
List<Map<Integer, String>>>();
var complexMap2 = new HashMap<String, List<Map<Integer, String>>>();
}
注意:
- 不能用var来声明字段。
- 不能使用var来声明方法参数。
- 不能使用var来声明方法返回类型。
- var声明变量必须初始化,但是不能初始化为null。
空指针异常
JDK8;报空指针异常不会解释原因。
JDK17;报空指针异常会解释原因。
密封类
在之前的学习中,我们了解到一个类不想被继承,需要在类之前加final关键字。
在JDK17中提供了⼀个新的关键字: sealed .密封类除了可以被该关键字修饰,并且在声明末尾用
permits 表⽰要开放给哪些类型。
例如,Class为密封类,然后使用 permits 关键字,把继承权限开放给了Student类。
sealed class Class permits Student{
public String class_id;
public Class (String class_id){
this.class_id = class_id;
}
}
//继承的类也要加上密封限制 non-sealed 表⽰不限制
non-sealed class Student extends Class{
public String name;
public String student_id;
public Student(String class_id,String name, String student_id) {
super(class_id);
this.name = name;
this.student_id = student_id;
}
}
总结
- sealed修饰的类必须要有⼦类。
- 使⽤non-sealed关键字修饰。表⽰不限制,任何类都可以继承。
- 未被 permits 允许的类型,则没办法继承。
接口中的私有方法
Java8,接口可以有默认方法。Java9之后,可以在接⼝内实现私有方法实现。
interface HelloService {
public void sayHello();
// 默认⽅法
default void saySomething(){
syaEngHello();
sayHello();
};
// 私有⽅法
private void syaEngHello(){
System.out.println("Hello!");
}
}
instanceof
if (obj instanceof String) {
String str = (String) obj;
}
instancof语法⼀共做了三件事:
- 判断是否为String类型;
- 如果是,转成String类型;
- 创建⼀个名为str的临时变量;
JDK16 优化后的效果。
if (obj instanceof String str) {// obj是否为String类型,如果是创建临时变量str}
其他
还有很多方法,但对我们初学者不常有,等以后自行探索。
文章来源:https://blog.csdn.net/2301_81225368/article/details/143097663
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: