前言👀~
在更新下一章数据库相关知识前,先分享一下java17的一些新特性,有些新特性狠实用!!!
如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,如果内容有什么问题的话,欢迎各位评论纠正 🤞🤞🤞
个人主页:N_0050-CSDN博客
相关专栏:java SE_N_0050的博客-CSDN博客 java数据结构_N_0050的博客-CSDN博客
Var
首先java17引入了一个新的关键字var,它可以代替很多类型名,特别体现在泛型上,接下来看一段代码大家就知道了
public static void main(String[] args) {// 引入的这个var这个类型 在声明泛型的时候,特别方便编译写那么长串var name = "java";var number = 1;var map = new HashMap<>();map.put("1", 17);for (Map.Entry<Object, Object> m1 : map.entrySet()) {System.out.println(m1.getValue());}System.out.println(name);//结果会输出javaSystem.out.println(number);//结果会打印1System.out.println(map);//会打印整个map对象,map中又是以键值对存储的,所以会打印{1=17}
}
这样大家应该能看的懂吧,这里再补充一下为什么最后一个map打印的是{1=17}
因为HashMap有一个toString方法,会返回这个键以及对应的值
注意事项:
1.var关键字不能用于方法的返回类型
2.var关键字不能来声明字段
3.var关键字声明变量的时候必须初始化,不能初始化成null
4.var关键字不能作为声明方法的参数,就是我们方法中的形参
Sealed
java17引入了一个新的类,密封类,顾名思义就是密封跟final的作用类似,但是呢又不完全类似,因为final修饰的类不能被继承,此时提高了一个新的关键字Sealed用来修饰密封类,废话不多说,直接上代码
// 密封类 相比 final(完全封闭,不允许其他类继承) 其他类可以继承 必须要有子类,默认情况是所有类都可以继承,如果要有限制,使用permits关键字,这样这个Person只能被B继承
sealed class Person permits B {}// 有三种写法 这是第一种 但是这种还是要有子类
//sealed class A extends Person {
//
//}//这是第二种 表⽰不限制,任何类都可以继承。
non-sealed class B extends Person {}//这是第三种 此时C会报错,因为没给C开权限 可以理解为你不是人民币玩家
//final class C extends Person {
//
//}
结论:
1.被sealed修饰的类,必须要有子类,其子类要么是final修饰、要么还是sealed修饰(还得有子类)、要么是non-sealed修饰
2.使用permits可以设置权限,只能让你指定的子类继承
3.被non-sealed修饰的类,表⽰不限制,任何类都可以继承
yield
java17引入了一个新的关键字yield,用于在case的代码块中返回值用的,还是一样上代码一下就看出来了
int a = 3;int result = switch (a) {case 1:yield 1;case 2:yield 2;case 3:yield 17;default:yield -1;};System.out.println(result);
instance of
java17对instance of进行了优化,在判断类型的时候,如果符合我们的条件直接创建一个符合类型的临时变量,老规矩看代码
if (obj instanceof String) {//之前的写法String str = (String) obj;}if (obj instanceof String str) {// obj是否为String类型,如果是创建临时变量str}
以上便是java17的一些实用特性,还有很多新特性等着大家一起去了解,如果有知道实用的一些新特性可以分享在评论区,下一章我会继续更新数据库的相关知识爱心💕