Java 8 与 Java 11新特性

Java 8 与 Java 11新特性

一、Java 8 的核心新特性

Java 8 引入函数式编程思想,大幅提升开发效率,解决传统 Java 诸多痛点。

新特性分类具体内容简要说明 & 核心价值
函数式编程核心Lambda 表达式1. 简化匿名内部类的编写,让代码更简洁紧凑;
2. 支持将"行为"作为参数传递,是函数式编程的基础;
3. 示例:List<String> list = Arrays.asList("a", "b"); list.forEach(s -> System.out.println(s));
Stream API(java.util.stream)1. 对集合/数组进行声明式、流水线式处理(过滤、映射、排序、聚合等);
2. 支持串行/并行执行,轻松实现数据批量处理,提升效率;
3. 示例:list.stream().filter(s -> s.length() > 1).count();(统计长度大于1的元素数量)
新日期时间APIjava.time 包1. 替代传统的DateCalendar(线程不安全、API设计混乱);
2. 提供LocalDateLocalTimeLocalDateTimeInstant等类,线程安全且API清晰;
3. 支持日期计算、格式化、时区转换,示例:LocalDate today = LocalDate.now(); LocalDate nextWeek = today.plusWeeks(1);
接口增强默认方法(default)& 静态方法(static)1. 默认方法:接口中可以定义带实现的方法,解决"接口新增方法导致所有实现类必须修改"的兼容问题;
2. 静态方法:接口中可以定义静态工具方法,无需依赖实现类即可调用;
3. 示例:interface MyInterface { default void sayHello() { System.out.println("Hello"); } }
其他实用特性Optional 类1. 用于解决空指针异常(NullPointerException),优雅地处理空值;
2. 支持isPresent()orElse()ifPresent()等方法,避免大量if (obj != null)判断;
3. 示例:Optional<String> opt = Optional.ofNullable(null); System.out.println(opt.orElse("default"));(输出default)
方法引用(Method Reference)1. 简化Lambda表达式的写法,当Lambda体只是调用一个已有方法时,可直接引用该方法;
2. 分为4种:静态方法引用、实例方法引用、对象方法引用、构造器引用;
3. 示例:list.forEach(System.out::println);(等价于list.forEach(s -> System.out.println(s));
Nashorn JavaScript 引擎支持在Java中调用JavaScript代码,后续在Java 11中被废弃。

二、Java 11 的核心新特性

Java 11 在 Java 8 基础上做了大量优化、完善和废弃,新增特性更偏向实用化和性能提升。

新特性分类具体内容简要说明 & 核心价值
开发效率提升局部变量类型推断(var 关键字)1. 用于局部变量声明,让编译器自动推断变量类型,简化代码;
2. 注意:仅支持局部变量(方法内)、必须初始化、不能用于成员变量/方法参数/返回值;
3. 示例:var str = "Hello Java 11";(编译器推断为String类型)
字符串新增实用方法1. String.isBlank():判断字符串是否为空白(包含空格、制表符、空字符串);
2. String.strip():去除字符串首尾的空白(比trim()更强大,支持Unicode空白字符);
3. String.stripLeading()/stripTrailing():分别去除首尾空白;
4. String.repeat(int n):将字符串重复n次;
5. 示例:" abc ".strip() → 结果为"abc";"a".repeat(3) → 结果为"aaa"
集合新增转数组方法(Collection.toArray())1. 新增toArray(IntFunction<T[]>)方法,简化集合转数组的操作;
2. 示例:List<String> list = Arrays.asList("a", "b"); String[] arr = list.toArray(String[]::new);(无需手动指定数组长度)
运行时 & 性能优化ZGC 垃圾回收器(实验性)1. 一款低延迟垃圾回收器,停顿时间不超过10毫秒,支持TB级内存;
2. 适合对响应时间要求极高的应用(如金融、电商秒杀),后续在Java 17中成为正式特性;
3. 启用参数:-XX:+UseZGC
Epsilon GC(无操作垃圾回收器)1. 只分配内存,不做任何垃圾回收,内存耗尽直接退出;
2. 用于性能测试、内存泄漏排查、短期运行的批量任务;
3. 启用参数:-XX:+UseEpsilonGC
移除JVM永久代(元空间Metaspace优化)进一步优化元空间内存管理,减少内存溢出风险,提升JVM稳定性。
工具 & 语法优化单文件Java程序运行(无需编译)1. 直接运行.java文件,无需先执行javac编译生成.class文件;
2. 适合简单的脚本式Java程序,简化开发和测试流程;
3. 命令:java HelloWorld.java(HelloWorld.java中包含main方法)
HTTP Client API(正式版,java.net.http)1. 替代传统的HttpURLConnection,支持HTTP/1.1HTTP/2,支持异步请求;
2. API设计清晰,支持请求/响应拦截、超时设置、JSON数据处理;
3. 适合开发网络请求相关应用,性能更优、使用更便捷。
废弃 & 移除废弃Nashorn JS引擎、移除Java EE & CORBA模块1. 移除了Java 8中的Nashorn JS引擎,推荐使用GraalVM替代;
2. 移除了不再常用的Java EE、CORBA相关API,精简JDK体积。
移除JDK中的jhat、jjs等工具精简JDK工具集,推荐使用更现代的工具替代。
Java 的核心特点 2026-02-01
Java 转义符 2026-02-05