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

news2025/1/6 20:54:14

文章目录

  • 前言
    • 一 : 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关键字修饰的变量必须初始化,不能为null
        var 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类型,赋给str
         if(animal instanceof Dog str){
             System.out.println(str);

         }

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1905559.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python集成Bartender实现二维码打印

本文摘录于:https://blog.csdn.net/mynameisJW/article/details/105500773只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 这里上传我优化了一下的代码:https://download.csdn.net/download/chengdong1314/89522026 我这里弄…

GuLi商城-商品服务-API-品牌管理-OSS整合测试

各语言SDK参考文档_对象存储(OSS)-阿里云帮助中心 安装SDK&#xff1a; <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.17.4</version> </dependency> 测试上传文件流&…

【leetcode周赛记录——405】

405周赛记录 #1.leetcode100339_找出加密后的字符串2.leetcode100328_生成不含相邻零的二进制字符串3.leetcode100359_统计X和Y频数相等的子矩阵数量4.leetcode100350_最小代价构造字符串 刷了一段时间算法了&#xff0c;打打周赛看看什么水平了 #1.leetcode100339_找出加密后的…

【微服务网关——服务发现】

1.服务发现 1.1 介绍 服务发现是指用注册中心来记录服务信息&#xff0c;以便其他服务快速查找已注册服务服务发现分类: 客户端服务发现服务端服务发现 1.2 客户端服务发现 客户端服务发现&#xff08;Client-side Service Discovery&#xff09;是一种微服务架构中的模式…

RAID的实现

软RAID&#xff0c;在实际工作中使用较少&#xff0c;性能太次。 mdadm工具&#xff0c;主要在虚拟机上使用&#xff0c; 硬RAID 用一个单独的芯片&#xff0c;这个芯片的名字叫做RAID卡&#xff0c;数据在RAID中进行分散的时候&#xff0c;用的就是RAID卡。 模拟RAID-5工作…

Http Json参数到x-www-form-urlencoded参数的在线转换工具

Json参数到x-www-form-urlencoded参数的在线转换工具

vue学习笔记之组件传值

说起组件传值&#xff0c;首先要介绍再vue中什么是组件。 组件&#xff08;Component&#xff09;&#xff0c;是vue中很强大的一个功能&#xff0c;可以将一些可重用的代码进行重用。所有的vue组件同时也是vue实例&#xff0c;可以接受使用相同的选项对象和提供相同的生命周期…

cf 7.7

Problem - C - Codeforces 大致意思&#xff1a; 找前缀&#xff0c;排序后使得本位之前数字和等于该位 &#xff08;以下代码超时了&#xff09; #include<bits/stdc.h> typedef long long ll;#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) const ll …

哈希表——C语言

哈希表&#xff08;Hash Table&#xff09;是一种高效的数据结构&#xff0c;能够在平均情况下实现常数时间的查找、插入和删除操作。 哈希表的核心是哈希函数&#xff0c;哈希函数是一个将输入数据&#xff08;通常称为“键”或“key”&#xff09;转换为固定长度的整数的函数…

Linux--V4L2摄像头驱动框架及UVC浅析

一、前言 对于一个usb摄像头&#xff0c;它的内核驱动源码位于/drivers/media/usb/uvc/ 核心层&#xff1a;V4L2_dev.c文件 硬件相关层&#xff1a; uvc_driver.c文件 本篇记录基于对6.8.8.8内核下vivid-core.c文件&#xff08;虚拟视频驱动程序&#xff09;的分析&#xff…

人工智能项目论文复现

文章目录 &#xff08;一&#xff09;技术学习任务Ⅰ、机器学习之聚类1、基本介绍概念2、聚类分析基本介绍3、K均值聚类4、K近邻分类模型(KNN)5、均值漂移聚类6、代码实现7、上述三种算法总结 Ⅱ、机器学习其他常用技术1、决策树基本知识2、异常检测概念3、主成分分析4、决策树…

【SpringCloud应用框架】Nacos服务配置中心

第四章 Spring Cloud Alibaba Nacos之服务配置中心 文章目录 一、基础配置二、新建子项目1.pom文件2.YML配置3.启动类4.业务类5.Nacos配置规则 三、Nacos平台创建配置操作四、自动配置更新五、测试 一、基础配置 Nacos不仅仅可以作为注册中心来使用&#xff0c;同时它支持作为…

算法:[动态规划] 斐波那契数列模型

目录 题目一&#xff1a;第 N 个泰波那契数 题目二&#xff1a;三步问题 题目三&#xff1a;最小花费爬楼梯 题目四&#xff1a;解码方法 题目一&#xff1a;第 N 个泰波那契数 泰波那契序列 Tn 定义如下&#xff1a; T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 …

CAN总线(下)

位时序 为了灵活调整每个采样点的位置&#xff0c;使采样点对齐数据位中心附近&#xff0c;CAN总线对每一个数据位的时长进行了更细的划分&#xff0c; 分为同步段&#xff08;SS&#xff09;、传播时间段&#xff08;PTS&#xff09;、相位缓冲段1&#xff08;PBS1&#xff0…

【Threejs进阶教程-优化篇】4.Vue/React与threejs如何解决冲突和卡顿(续)

Vue/React与threejs如何解决冲突和卡顿-续 使用说明核心思路环境搭建(vuethree)vue运行机制分析业务分离使用threejs做背景 3D模块封装使用ES6的Class来让逻辑性更强Threejs尽量按需引入创建一个类扩展写法本次代码执行顺序 扩展内容添加orbitControls和辅助线解决事件覆盖 与V…

程序员学长 | 快速学会一个算法,xLSTM

本文来源公众号“程序员学长”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;快速学会一个算法&#xff0c;xLSTM 今天给大家分享一个超强的算法模型&#xff0c;xLSTM。 xLSTM&#xff08;Extended Long Short-Term Memory&…

AI大模型的智能心脏:向量数据库的崛起

在人工智能的飞速发展中&#xff0c;一个关键技术正悄然成为AI大模型的智能心脏——向量数据库。它不仅是数据存储和管理的革命性工具&#xff0c;更是AI技术突破的核心。随着AI大模型在各个领域的广泛应用&#xff0c;向量数据库的重要性日益凸显。 01 技术突破&#xff1a;向…

水箱高低水位浮球液位开关工作原理

工作原理 水箱高低水位浮球液位开关是一种利用浮球随液位升降来实现液位控制的设备。其基本原理是浮球在液体的浮力作用下上下浮动&#xff0c;通过磁性作用驱动与之相连的磁簧开关的开合&#xff0c;从而实现液位的高低控制和报警。当液位升高时&#xff0c;浮球上浮&#xf…

Jmeter实现接口自动化

自动化测试理论知识 什么是自动化测试&#xff1f; 让程序或工具代替人为执行测试用例什么样的项目适合做自动化&#xff1f; 1、项目周期长 --多长算长&#xff1f;&#xff08;自己公司运营项目&#xff09; 2、需求稳定&#xff08;更多具体功能/模块&#xff09; 3、需要…

LabVIEW机器视觉系统中的图像畸变、校准和矫正

在机器视觉应用中&#xff0c;图像畸变、校准和矫正是确保图像准确性的关键步骤。LabVIEW作为一种强大的图像处理和分析工具&#xff0c;提供了一系列功能来处理这些问题。以下是对图像畸变、校准和矫正的详细介绍。 图像畸变 图像畸变 是指由于摄像镜头的光学特性或拍摄角度问…