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

文章目录

  • 前言
    • 一 : 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中,还有一些其他的新增特性,以后用到再进行阐述。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot的无缝衔接:深入解析与实践

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 🚀The begin🚗点点关注,收藏不迷路🚩 引言 在快速迭代的软件开发环境中,无缝衔接是提升开发效率、降低维护成本、增强系统稳定性的关键。Spring Boo…

STM32芯片系列与产品后缀解读

一. 产品系列 STM32单片机是一系列基于ARM Cortex-M内核的32位微控制器,广泛应用于嵌入式系统中。 STM32系列由STMicroelectronics(意法半导体)开发和生产,并凭借其灵活的设计、丰富的外设和强大的生态系统,成为嵌入式…

LLM - 卷积神经网络(CNN)

1. 卷积神经网络结构:分为输入层,卷积层,池化层,全连接层; (1)首先进入输入层,对数据数据进行处理,将输入数据向量化处理,最终形成输入矩阵。 (…

C++ 什么是虚函数?什么是纯虚函数,以及区别?(通俗易懂)

📚 当谈到虚函数时,通常是指在面向对象编程中的一种机制,它允许在派生类中重写基类的函数,并且能够通过基类指针或引用调用派生类中的函数。 目录 前言 🔥 虚函数 🔥 纯虚函数 🔥 两者区别…

用 Echarts 画折线图

https://andi.cn/page/621503.html

leetcode每日一题-3033. 修改矩阵

题目描述: 解题思路:简单题目,思路非常直接。对列进行遍历,记录下最大值,然后再遍历一遍,把-1替换为最大值。需要注意的是进行列遍历和行遍历是不同的。 官方题解: class Solution { public:v…

VRay渲染有什么技巧?渲染100邀请码1a12

渲染是视觉行业非常重要的一环,没有渲染就没有效果图,常用的渲染器有Vray,而Vray渲染有很多技巧,可以让渲染更快更省,下面我们总结下。 1、删除无用对象 检查场景,看是否有一些不需要渲染的物体和灯光&am…

将大型语言模型模块化打造协作智能体

B UILDING C OOPERATIVE E MBODIED A GENTS MODULARLY WITH L ARGE L ANGUAGE M ODELS 论文链接: https://arxiv.org/abs/2307.02485https://arxiv.org/abs/2307.02485 1.概述 在去中心化控制及多任务环境中,多智能体合作问题因原始感官观察、高昂…

绝区肆--2024 年AI安全状况

前言 随着人工智能系统变得越来越强大和普及,与之相关的安全问题也越来越多。让我们来看看 2024 年人工智能安全的现状——评估威胁、分析漏洞、审查有前景的防御策略,并推测这一关键领域的未来可能如何。 主要的人工智能安全威胁 人工智能系统和应用程…

el-date-picker 设置默认值为当前日期

this.listQuery.Date new Date().toISOString().substr(0, 10); <el-date-picker v-model"listQuery.Date" format"yyyy-MM-dd" value-format"yyyy-MM-dd" type"date" placeholder"选择日期" change"getList()&qu…

Java语言程序设计篇一

Java语言概述 Java语言起源编程语言最新排名名字起源Java语言发展历程Java语言的特点Java虚拟机垃圾回收Java语言规范Java技术简介Java程序的结构Java程序注意事项&#xff1a;注释编程风格练习 Java语言起源 1990年Sun公司提出一项绿色计划。1992年语言开发成功最初取名为Oak…

Blender新手入门笔记收容所(一)

基础篇 基础操作 视角的控制 控制观察视角&#xff1a;鼠标中键平移视图&#xff1a;Shift鼠标中键缩放视图&#xff1a;滚动鼠标中键滚轮 选中物体后&#xff1a;移动物体快捷键G&#xff0c;移动后单击鼠标就会定下来。 进入移动状态后&#xff1a;按Y会沿着Y轴移动进入移动…

成人高考本科何时报名-深职训学校帮您规划学习之路

你有想过继续深造自己的学历吗&#xff1f;也许你已经工作多年&#xff0c;但总觉得学历是一块心病&#xff0c;想要通过成人高考本科来提升自己。不用着急&#xff0c;今天我们来聊一聊成人高考本科的报名时间&#xff0c;以及深职训学校如何帮助你顺利完成报名。 深圳成人高…

2024上半年网络工程师考试《应用技术》试题一

阅读以下说明&#xff0c;回答问题。 【说明】 MPLS基于(1)进行转发&#xff0c;进行MPLS标签交换和报文转发的网络设备称为(2)&#xff0c;构成MPLS域(MPSDomain)。位于MPLS域边缘、连接其他网络的LSR称为(3),区域内部的LSR称为核心LSR(CoreLSR)IP报文进入MPLS网络时&#xf…

文件管理下:文件函数的学习

前言 Hello,小伙伴们你们的作者君又来了&#xff0c;上次我们简单介绍了文件的坐拥并简单提到了数据的读取&#xff0c;和C语言的默认流的作用&#xff0c;今天我将继续带领大家探索文件的奥秘&#xff0c;大家准别好了吗&#xff1f; 在内容开始之前还是按照惯例&#xff0c…

Alt与Tab切换窗口时将Edge多个标签页作为一个整体参与切换的方法

本文介绍在Windows电脑中&#xff0c;使用Alt与Tab切换窗口时&#xff0c;将Edge浏览器作为一个整体参与切换&#xff0c;而不是其中若干个页面参与切换的方法。 最近&#xff0c;需要将主要使用的浏览器由原本的Chrome换为Edge&#xff1b;但是&#xff0c;在更换后发现&#…

Python爬虫系列-让爬虫自己写爬虫(半自动化,代替人工写爬虫)

现在的PC、手机客户端等终端设备大量使用了网页前后端技术&#xff0c;另外主流的网站也会经常会更新&#xff0c;导致以前一个月更新一次爬虫代码&#xff0c;变成了天天需要更新代码&#xff0c;所以自动化爬虫技术在当前就显得特别重要&#xff0c;最近我也是在多次更新某个…

Java | Leetcode Java题解之第220题存在重复元素III

题目&#xff1a; 题解&#xff1a; class Solution {public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {int n nums.length;Map<Long, Long> map new HashMap<Long, Long>();long w (long) t 1;for (int i 0; i < n; i) {long i…

【Java探索之旅】初识多态_概念_实现条件

文章目录 &#x1f4d1;前言一、多态1.1 概念1.2 多态的实现条件 &#x1f324;️全篇总结 &#x1f4d1;前言 多态作为面向对象编程中的重要概念&#xff0c;为我们提供了一种灵活而强大的编程方式。通过多态&#xff0c;同一种操作可以应用于不同的对象&#xff0c;并根据对象…

【Python迭代器探秘】:揭秘迭代器与生成器的魔法,掌握高效循环的艺术

文章目录 一、迭代器的基本概念1.1 迭代器优点1.2 迭代器的编写方法1.3 python内置迭代器函数1.4 小结1.5 迭代器对象与迭代对象1.5.1 区别1. 迭代对象2. 迭代器对象3. 小结 1.5.2 方法区分 二、生成器基本概念1. 生成器函数2. 生成器表达式 一、迭代器的基本概念 迭代器是Pyt…