【大白话说Java面试题】【Java基础篇】第25题:JDK1.8的新特性有哪些

第25题:JDK1.8的新特性有哪些

📚 回答:

JDK1.8是一个重要的版本更新,引入了许多实用的新特性,以下是其中的核心内容:

1. 接口支持默认方法和静态方法
  • 背景

    在JDK1.8之前,接口只能包含抽象方法。如果需要在接口中添加方法,则所有实现类都需要同步修改,这会导致兼容性问题。

  • 新特性

    • 使用default关键字为接口方法提供默认实现。
    • 使用static关键字为接口添加静态方法。

    💡 代码示例

    以下代码展示了接口默认方法的使用:

java 复制代码
interface MyInterface {
    default void defaultMethod() {
        System.out.println("This is a default method");
    }

    static void staticMethod() {
        System.out.println("This is a static method");
    }
}

class MyClass implements MyInterface {}

public class Main {
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        obj.defaultMethod(); // 调用默认方法
        MyInterface.staticMethod(); // 调用静态方法
    }
}
2. Lambda表达式
  • 定义

    Lambda表达式是一种简洁的方式,用于表示匿名函数,允许把函数作为参数传递给其他方法。

  • 语法
    (参数列表) -> { 方法体 }

  • 应用场景

    常用于简化集合操作(如forEach)、线程创建等场景。

    💡 代码示例

    以下代码展示了Lambda表达式的使用:

java 复制代码
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

        // 使用Lambda表达式遍历集合
        names.forEach(name -> System.out.println(name));
    }
}
3. 新的日期时间API
  • 背景

    JDK1.8之前的日期时间API(如DateCalendar)存在线程安全问题,且使用不便。

  • 新特性

    引入了java.time包,提供了更强大、更易用的日期时间类,如LocalDateLocalTimeLocalDateTime

    💡 代码示例

    以下代码展示了新的日期时间API的使用:

java 复制代码
import java.time.LocalDate;
import java.time.LocalDateTime;

public class Main {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now(); // 获取当前日期
        LocalDateTime now = LocalDateTime.now(); // 获取当前日期和时间

        System.out.println("Today: " + today);
        System.out.println("Now: " + now);
    }
}
4. Stream API
  • 定义
    Stream是JDK1.8新增的一个流式处理框架,用于对集合进行高效的操作(如过滤、映射、排序等)。

  • 特点

    • 支持链式调用,代码简洁优雅。
    • 提供并行流(parallelStream),提升性能。

    💡 代码示例

    以下代码展示了Stream API的使用:

java 复制代码
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

        // 使用Stream API过滤偶数并求和
        int sum = numbers.stream()
                         .filter(n -> n % 2 == 0)
                         .mapToInt(Integer::intValue)
                         .sum();

        System.out.println("Sum of even numbers: " + sum); // 输出 6
    }
}

📌 专栏 :大白话说Java面试题 --- 01-Java基础篇

相关推荐
自珍JAVA1 天前
访问者模式:让你的代码优雅地“拜访”对象结构
后端
奋斗的小乌龟1 天前
动态创建Agent02
java
吃好睡好便好1 天前
用while循环语句求和
开发语言·学习·算法·matlab·信息可视化
ZFSS1 天前
Localization Translate API 集成与使用指南
java·服务器·数据库·人工智能·mysql·ai编程
TechWayfarer1 天前
查询IP所在地的3种方案:从API到离线库,风控场景怎么选?
开发语言·网络·python·网络协议·tcp/ip
摇滚侠1 天前
Java 零基础全套教程,集合框架,笔记 153-163
java·开发语言·笔记
nannan12321 天前
后端技术栈梳理
java
程序员榴莲1 天前
Python 单例模式
开发语言·python·单例模式
不知名的忻1 天前
B 树与 B+ 树:面试完全指南
b树·算法·面试·b+树
L、2181 天前
CANN算子开发调试实战:从“Segmentation Fault“到定位根因的完整流程
java·开发语言