Java9-17新特性

  • 博客主页:天天困啊
  • 系列专栏:面试题
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

在Java8中,接口就引入了default和static方法,这样我们可以在接口中编写方法

Java9中,接口可以支持private私有方法了

Java9新特性

/**
 * @author 天天困
 * @date 2025/12/10
 */
public interface test {
    default void test1() {
        System.out.println("test");
    }
    static void test2() {
        System.out.println("test2");
    }
    default void test3() {
        test1();
    }
    static void test4() {
        test2();
    }
}
/**
 * @author 天天困
 * @date 2025/12/10
 */
public class testImpl implements test{

}

假如我们调用的时候想让一些内部定义的方法私有化,我们就可以引入Java9在接口中的新特性,实现private

/**
 * @author 天天困
 * @date 2025/12/10
 */
public interface test {
    private void test1() {
        System.out.println("test");
    }
    static void test2() {
        System.out.println("test2");
    }
    private void test3() {
        test1();
    }
    static void test4() {
        test2();
    }
}

Java11新特性

Java11中引入了关键字var,它可以简化局部变量的定义

var关键字不能随便使用,只能在方法内

public class Main {
    public static void main(String[] args) {
        var a=1;
        System.out.println(a);
    }
}

以下的这种写法不行

不再方法里

public class Main {

    var a=1;
    public static void main(String[] args) {

    }
}

赋值为null,或者定义好不赋值也不行

public class Main {

    public static void main(String[] args) {
        var a=null;
        var b;
    }
}

Java14新特性

增强版switch

可以省略break,通过箭头语法进行简化

public class Main {
    public static void main(String[] args) {
        int num=1;
        switch (num){
            case 1-> System.out.println("1");
            case 2-> System.out.println("2");
            case 3-> System.out.println("3");
            default -> System.out.println("default");
        }
    }
}

代码块

public class Main {
    public static void main(String[] args) {
        int num=1;
        switch (num){
            case 1-> System.out.println("1");
            case 2-> System.out.println("2");
            case 3-> {
                System.out.println("3");
            }
            default -> System.out.println("default");
        }

    }
}

Java15新特性

字符串拼接

以前我们拼接多行字符串需要用+号来完成,这样很不优雅,现在我们可以用三个引号来完成

public class Main {
    public static void main(String[] args) {
       String s= """
               还能这么玩?
               当然可以了
               """;
       System.out.println(s);
    }
}

合并转义字符\

可以让指定的两行文字合并到一行里

空格转义字符\s

可以指定某个位置空一格

Java16新特性

instanceof类型判断增强

在Java16之后就不需要进行显示类型强转了,可以直接用这个新特性

Record类型

用于定义数据载体对象,当想要创建的对象,初始化赋值后,后续永远不再更改,就可以考虑用Record类型

当我们使用record关键字时,编译器会自动生成final,全参构造器,get方法,equals方法,hashcode方法,tostring方法

Java 8 到 17Java 语言的重要发展阶段,每个版本都引入了众多新特性和改进,这些特性涵盖语言简化、模块化与性能优化、安全增强和开发者工具等方面[^4]。以下是各版本的主要新特性: ### Java 8 新特性 - **Lambda 表达式**:它是 Java 8 引入的一个重要特性,允许将函数作为参数传递给方法,使代码更加简洁和灵活。例如: ```java List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.forEach(n -> System.out.println(n)); ``` - **Stream API**:提供了一种高效且易于使用的方式来处理集合数据,支持过滤、映射、排序等操作,提高了代码的可读性和性能[^3]。例如: ```java List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); int sum = numbers.stream() .filter(n -> n % 2 == 0) .mapToInt(Integer::intValue) .sum(); ``` ### 其他版本可能的特性(因引用未详细提及后续版本特性,补充常见特性) - **Java 9**: - **模块化系统**:引入了 Java 平台模块系统(JPMS),增强了安全性和可维护性。 - **JShell**:交互式编程环境,方便开发者快速测试代码片段。 - **Java 10**: - **局部变量类型推断**:使用 `var` 关键字可以自动推断局部变量的类型,减少样板代码。 - **Java 11**: - **HTTP Client API**:提供了标准的 HTTP 客户端 API,支持 HTTP/2 协议。 - **ZGC**:可伸缩低延迟垃圾回收器,提高了应用的性能。 - **Java 12**: - **Switch 表达式**:增强了 `switch` 语句,支持返回值。 - **Java 13**: - **文本块**:简化了多行字符串的编写。 - **Java 14**: - **密封类**:限制类的继承,增强了代码的安全性。 - **Java 15**: - **隐藏类**:用于在运行时动态生成类。 - **Java 16**: - **向量 API**:提供了高效的向量计算支持。 - **Java 17**: - **随机数 API**:提供了更灵活的随机数生成方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值