亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 8 概览:函数式编程、流式 API 与日期时间新特性

Java 8 核心特性

Java 8 于 2014 年 3 月 18 日发布,是里程碑版本,引入函数式编程能力、新 JS 引擎、日期时间 API、流式处理等:

特性说明
Lambda 表达式函数式编程入口,简化匿名内部类,(a,b) -> a+b。
方法引用:: 语法引用现有方法,如 System.out::println。
默认方法接口含实现的方法,default 关键字,兼容旧接口演进。
Stream API声明式数据处理管道,filter/map/reduce/collect,支持并行流。
Date/Time APIjava.time 包,不可变、线程安全、领域驱动设计。
Optional容器化可为空值,消除 null 检查泛滥,ifPresent/orElse。
Nashorn JS 引擎JVM 上运行 JavaScript,后续版本移除(Java 15 移除)。
新工具jdeps 依赖分析、jjs JS Shell、javac -parameters 保留参数名。

Lambda 与方法引用对比示例

import java.util.*;
import java.util.Comparator;

public class Java8Tester {
    public static void main(String[] args) {
        List names1 = Arrays.asList("Mahesh", "Suresh", "Ramesh", "Naresh", "Kalpesh");
        List names2 = new ArrayList<>(names1);

        // Java 7 匿名内部类
        Collections.sort(names1, new Comparator() {
            @Override public int compare(String s1, String s2) { return s1.compareTo(s2); }
        });

        // Java 8 Lambda
        Collections.sort(names2, (s1, s2) -> s1.compareTo(s2));

        // Java 8 方法引用(更简洁)
        Collections.sort(names2, String::compareTo);

        System.out.println(names1); // [Kalpesh, Mahesh, Naresh, Ramesh, Suresh]
        System.out.println(names2); // [Kalpesh, Mahesh, Naresh, Ramesh, Suresh]
    }
}

函数式接口与 @FunctionalInterface

单抽象方法接口(SAM)可隐式转换为 Lambda。标注 @FunctionalInterface 可编译期校验。

核心包 java.util.function 提供 40+ 标准函数式接口:Predicate、Function、Consumer、Supplier、BinaryOperator 等及其原语特化。

Stream API 核心模式

List result = list.stream()
    .filter(s -> s.length() > 3)
    .map(String::toUpperCase)
    .distinct()
    .sorted()
    .limit(10)
    .collect(Collectors.toList());

日期时间 API 核心类

类用途
LocalDate日期(年月日),无时区
LocalTime时间(时分秒纳秒),无时区
LocalDateTime日期时间,无时区
ZonedDateTime带时区日期时间
Instant时间戳(UTC),机器时间
Duration/Period时间量/日期量
DateTimeFormatter线程安全格式化/解析

全部不可变、线程安全,彻底解决 java.util.Date/Calendar 设计缺陷。

java

  1. 掌握 C# 字符串:基础、操作与进阶技巧完全指南
  2. 精通 Java 运算符:类型、语法与实战示例
  3. 精通 Java 字符串:创建、方法与最佳实践
  4. 精通 Java 接口:概念、实现与最佳实践
  5. 精通 Java 枚举字符串表示:默认行为、toString 重写与进阶模式
  6. 精通 Java Try-With-Resources:自动资源管理详解
  7. Java 注解详解:类型、放置位置与实战示例
  8. Java String length() 方法:获取字符串长度(示例)
  9. 精通 Java String.indexOf():定位子字符串与实战示例
  10. Java String.charAt() 详解:语法、返回类型、异常与实战示例
  11. 精通 Java String compareTo():语法、用例与实战示例
  12. 精通 Java String.endsWith():检查字符串后缀(示例)