第18章_JDK8-17新特性(下)

第18章_JDK8-17新特性(下)

6.新语法结构

6.1 Java的REPL工具:jShell命令

17

6.2异常处理之try-catch资源关闭

9

6.3局部变量类型推断

10 var

6.4 instanceof的模式匹配

16

if(obj instanceof String str){

6.5 switch表达式

14

int result = switch (day) {
case MONDAY ->1;
case TUESDAY,WEDNESDAY,THURSDAY ->2;case FRIDAY ->3;
case SATURDAY,SUNDAY ->4;
default -> throw new RuntimeException("what day is today?" + day);;I
system. out.println(result);

JDK12中的写法:还可以使用变量接收switch表达式的结果。

举例1:(在default中返回值5)
JDK13中的写法:引入了yield关键字,用于返回指定的数据,结束switch结构。
这意味着,switch表达式(返回值)应该使用yield,switch语句(不返回值)应该使用break。
和return的区别在于:return会直接跳出当前方法,而yield只会跳出当前switch块。

int result = switch (day) {
case MONDAY -> {
yield 1;

6.5文本块

15

String info = """
<html>
<body>
<p>HellT
尚硅谷</p>
</body>
</html>" " ";
system.out.println(info);

JDK14新特性:

:取消换行操作

\s∶表示一个空格

6.7 Record

16

public record Order1(int orderId , String orderName) {}
//-还可以在record声明的类中定义静态字段、静态方法、构造器或实例方法。
static String info ="我是一个人";
//-不能在record声明的类中定义实例字段;类不能声明为abstract;不能声明显式的父类等

6.8密封类

17

/ /Person是一个密封类,可以被指定的子类所继承。非指定的类不能继承Person类

public sealed class Person permits Student,Teacher ,Worker
    
    
//要求指定的子类必须是final.sealed. non-sealed三者之一1 usage
final class Student extends Person{}//Student类不能被继承了。

                                   
sealed class Teacher extends Person permits SeniorTeacher{}//Teacher类只能被指定的子类继承

non-sealed class Worker extends Person{}//Worker类在继承时,没有任何限制




7.API的变化

7.1 Optional类

JDK8的新特性

1.为什么需要Optional类?

为了避免代码中出现空指针异常。

2.如何实例化?
static Optional ofNullable(T value)':用来创建一个Optional实例, value可能是空,也可能非空

  public void test1(){
    String star="qqqqq";
    star=null;

        //使用Optional避免空指针的问题
        // 1.实例化:
        //ofNullable(T value)`:用来创建一个Optional实例,value可能是空,也可能非空
        Optional<String> star1 = Optional.ofNullable(star);

        //orElse(T other):如果Optional实例内部的value属性不为null,则返回value。如果value为null,
        // 则返回other.
        String otherStar="aaaaa";
        String finalStar = star1.orElse(otherStar);

        System.out.println(finalStar);
        //get():取出内部的value值。
        

    }

2.JDK8:lambda表达式

2.1什么情况下可以使用lambda表达式

  • 在给函数式接口提供实例时,都可以考虑使用lambda表达式。
  • 基本语法的使用(重要)

2.2函数式接口

  • 常见的函数式接口。Comparator \ Runnable \ java.util.function下定义的丰富的函数式接口

    消费型接口:Consumer<T> void accept(T t)
    供给型接口:Supplier<T> T get()
    函数型接口:Function<T,R> R apply(T t)
    判断型接口:Predicate<T> boolean test(T t)
    
posted @   新至所向  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示