当前位置: 首页> 房产> 政策 > 初识java—jdk17的一些新增特性

初识java—jdk17的一些新增特性

时间:2025/7/11 15:44:21来源:https://blog.csdn.net/2301_77993957/article/details/140242792 浏览次数:0次

文章目录

  • 前言
    • 一 : yield关键字
    • 二 :var关键字
    • 三 :密封类
    • 四 :空指针异常:
    • 五:接口中的私有方法:
    • 六:instanceof关键字


前言

这里介绍jdk17相对于jdk1.8的部分新增特性。

一 : yield关键字

yield关键字用于switch语句简写的场景,下面用代码演示,很简单:

 public static void main1(String[] args) {//yield关键字int ret1 = 5;switch(ret1) {case 1:System.out.println(1);break;case 2:System.out.println(2);break;case 3:System.out.println(3);break;default:System.out.println(4);break;}int ret2 = 5;switch(ret2) {//关于switch语句的简写case 1 -> System.out.println(1);case 2 -> System.out.println(2);case 3 -> System.out.println(3);default -> System.out.println(4);}//yield关键字用于代替->//case后面添加: ,yield后也加上:int ret3 = 5;switch(ret3){case 1: yield : System.out.println(1);case 2 : yield :  System.out.println(2);case 3 : yield : System.out.println(3);default : yield : System.out.println(4);}

在这里插入图片描述

二 :var关键字

var关键字根据变量的值判断并代表变量的类型,这对于一些类型复杂的变量来说,提高了代码的简洁性:

  public static void main(String[] args) {//var关键字//var关键用于通过变量值判断且代表变量的类型,这样对于类型复杂的变量可以提高代码的简洁度//因此var关键字修饰的变量必须初始化,不能为nullvar name = "zhangsan";var age = 14;}

注意事项:

  1. var不能声明成员变量
  2. var 不能修饰形参的类型
  3. var不能作为方法的返回值类型
  4. var修饰的变量值不能为null

三 :密封类

sealed关键字与final关键字相同,修饰的类也是密封类,但是sealed修饰的类必须有子类,而final修饰的类是最终类,没有子类

关于密封类及其子类的思维导图:
在这里插入图片描述

代码:

sealed   class Animal{String name ;int age;
}final    class  Dog  extends Animal{}
non-sealed  class petDog extends Animal{}
sealed class  testDog extends Animal{}
non-sealed class test2 extends testDog{}

四 :空指针异常:

在jdk8之前,报指针异常时,不会指出具体原因,但是在jdk9之后,报空指针异常时,会指出具体的原因:

 public static void main(String[] args) {//空指针异常String name = null;System.out.println(name.toLowerCase());}

在这里插入图片描述

五:接口中的私有方法:

在jdk8 接口中可以实现默认方法,在jdk9之后,接口中可以实现私有方法,因为接口中的私有方法不可能在外部被使用,所以接口中的私有方法是为默认方法提供帮助的。

public interface Itest {
//默认方法default void func2(){func1();}
//私有方法private  void  func1(){System.out.println("hehe");}
}

六:instanceof关键字

在之前的博客中讲述到instanceof关键字用于判断左边的变量类型是否是右边的类型所转化。
在jdk9之后将这个过程简化了:

     Animal animal = (Animal) new Dog();//简化前:如果animal类型是Dog类型所转换,则将animal类型转换成Dog类型if(animal instanceof Dog){Dog str = (Dog) animal;}//简化后://如果animal类型是Dog类型转换,自动创建一个Dog类型的变量str ,将animal类型转换成Dog类型,赋给strif(animal instanceof Dog str){System.out.println(str);}

在jdk17中,还有一些其他的新增特性,以后用到再进行阐述。

关键字:初识java—jdk17的一些新增特性

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: