news 2026/4/17 10:41:07

【Java +AI |基础篇day8 函数式编程 + 常用 API + 综合案例 + 15 道高频面试题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Java +AI |基础篇day8 函数式编程 + 常用 API + 综合案例 + 15 道高频面试题】

第三份:Java 面向对象编程(OOP)进阶篇③:函数式编程 + 常用 API + 综合案例 + 15 道高频面试题

(初学者友好 + 可运行代码 + 面试题详解)

前言

初学 Java 函数式编程时,我看不懂 Lambda 表达式的简化规则、方法引用的适用场景,面试时面对综合案例题无从下手 —— 函数式编程是 JDK8+ 的核心特性,常用 API(String、ArrayList)是开发必备,综合案例则是检验 OOP 掌握程度的关键。这篇内容把函数式编程、常用 API、GUI 编程和 15 道难度递增的面试题拆解清楚,所有代码极简可运行,帮新手从理论落地到实践,应对面试和开发场景。

一、核心思路 / 概念(大白话讲透)
  1. 函数式编程:核心是「关注做什么,而非怎么做」—— 通过 Lambda 表达式和方法引用简化代码,基于函数式接口实现,告别冗余的匿名内部类。
  2. String 类:核心是「不可变字符串」—— 创建后内容不能改,常量池避免重复创建,是开发中最常用的类。
  3. ArrayList 类:核心是「动态数组」—— 支持自动扩容,是存储数据的首选集合。
  4. GUI 编程(Swing):核心是「图形化界面」—— 用组件和布局管理器搭建界面,事件监听处理用户操作(虽日常开发少用,但适合练手)。
二、实操步骤 + 可运行代码
2.1 函数式编程(JDK8+)
2.1.1 Lambda 表达式(简化匿名内部类)

java

运行

import java.util.Arrays; import java.util.Comparator; class Student { String name; int age; public Student(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return name + "," + age + "岁"; } } public class LambdaDemo { public static void main(String[] args) { Student[] students = {new Student("张三",20), new Student("李四",18)}; // 匿名内部类排序 Arrays.sort(students, new Comparator<Student>() { @Override public int compare(Student s1, Student s2) { return s1.age - s2.age; } }); // Lambda简化(完整→最简) Arrays.sort(students, (s1, s2) -> s1.age - s2.age); System.out.println(Arrays.toString(students)); // 输出:李四,18岁, 张三,20岁 } }
2.1.2 方法引用(Lambda 进一步简化)

java

运行

import java.util.Arrays; import java.util.function.Supplier; public class MethodRefDemo { public static void main(String[] args) { // 1. 特定类型方法引用:字符串按长度排序 String[] strs = {"apple", "banana"}; Arrays.sort(strs, String::length); System.out.println(Arrays.toString(strs)); // 输出:[apple, banana] // 2. 构造器引用:创建对象 Supplier<StringBuilder> sup = StringBuilder::new; System.out.println(sup.get()); // 输出:空字符串 } }
2.2 常用 API
2.2.1 String 类(核心方法)

java

运行

public class StringDemo { public static void main(String[] args) { String s = "Hello World"; System.out.println(s.length()); // 长度:11 System.out.println(s.substring(0,5)); // 截取:Hello System.out.println(s.replace("World", "Java")); // 替换:Hello Java System.out.println(s.contains("World")); // 包含:true // 常量池:直接赋值vs new String s1 = "abc"; String s2 = new String("abc").intern(); System.out.println(s1 == s2); // true:都指向常量池 } }
2.2.2 ArrayList 类(核心方法)

java

运行

import java.util.ArrayList; import java.util.List; public class ArrayListDemo { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("a"); // 添加 list.add("b"); System.out.println(list.get(0)); // 获取:a list.set(1, "c"); // 修改:[a,c] list.remove(0); // 删除:[c] System.out.println(list.size()); // 大小:1 } }
2.2.3 GUI 编程(Swing 简单示例)

java

运行

import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class SwingDemo { public static void main(String[] args) { // 1. 创建窗口 JFrame frame = new JFrame("Swing示例"); frame.setSize(400, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); // 2. 创建按钮 JButton btn = new JButton("点击我"); btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(frame, "按钮被点击!"); } }); // 3. 组装组件 frame.add(btn); frame.setVisible(true); } }
2.3 综合案例:员工信息管理系统(核心代码)
2.3.1 员工实体类

java

运行

public class Employee { private int id; private String name; private String job; private String dept; // 构造器+getter/setter+toString(省略,参考前文) }
2.3.2 数据访问接口 + 实现

java

运行

import java.util.ArrayList; import java.util.List; public interface EmployeeDAO { void add(Employee emp); List<Employee> queryAll(); boolean delete(int id); } public class EmployeeDAOImpl implements EmployeeDAO { private List<Employee> list = new ArrayList<>(); private int nextId = 1; @Override public void add(Employee emp) { emp.setId(nextId++); list.add(emp); } @Override public List<Employee> queryAll() { return new ArrayList<>(list); } @Override public boolean delete(int id) { for (Employee emp : list) { if (emp.getId() == id) { list.remove(emp); return true; } } return false; } }
2.3.3 GUI 界面(核心逻辑)

java

运行

import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.*; public class EmployeeFrame extends JFrame { private EmployeeDAO dao = new EmployeeDAOImpl(); private DefaultTableModel tableModel; public EmployeeFrame() { // 窗口初始化(省略,参考前文) // 表格展示、添加/删除按钮逻辑(省略,参考前文) } public static void main(String[] args) { new EmployeeFrame(); } }
三、15 道 OOP 高级面试题(核心精选)
题号核心考点核心答案摘要
1方法重写规则方法名 / 参数列表一致、权限不缩小、返回值兼容、私有 / 静态方法不能重写
2子类构造器规则必须先调用父类构造器(super ()),this ()/super () 不能共存(都要第一行)
3多态的属性 vs 方法方法动态绑定(看对象),属性无多态(看引用)
4向下转型需用 instanceof 校验,避免 ClassCastException
5final 关键字修饰类不可继承、方法不可重写、变量不可改值,static final 是全局常量
6抽象类不能创建对象,子类必须实现所有抽象方法,否则子类也需抽象
7接口 JDK8+ 新特性默认方法(可重写)、静态方法(接口名调用)、私有方法(接口内部用)
8抽象类 vs 接口抽象类单继承、含普通方法;接口多实现、默认 public 成员
9单例模式饿汉式线程安全但懒加载;懒汉式需双重检查锁 + volatile;枚举单例最安全
10枚举类不可继承、构造器私有、values () 返回所有常量,类型安全
11代码块执行顺序父静态→子静态→父实例→父构造→子实例→子构造
12内部类成员内部类依赖外部实例,静态内部类不依赖,匿名内部类简化一次性实现
13Lambda 表达式函数式接口为前提,简化匿名内部类,支持参数类型省略、大括号省略
14方法引用Lambda 简化版,分静态 / 实例 / 特定类型 / 构造器引用,仅调用已有方法时使用
15OOP 综合设计体现封装 / 多态 / 接口,新增功能无需修改原有代码(开闭原则)
四、总结
  1. 函数式编程核心:Lambda 基于函数式接口,方法引用是 Lambda 的简化,让代码更简洁;
  2. 常用 API 核心:String 不可变、常量池优化,ArrayList 动态扩容,开发中优先使用;
  3. 综合案例核心:接口定义规范、ArrayList 存储数据、Swing 搭建界面,体现 OOP 封装 / 多态 / 开闭原则;
  4. 面试核心:重点掌握方法重写、多态、抽象类 vs 接口、单例模式、Lambda 表达式,理解底层逻辑而非死记。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 0:36:03

一款集成了智能客户关系管理思维的上门预约小程序系统

温馨提示&#xff1a;文末有资源获取方式在家政服务行业&#xff0c;获取新客户的成本往往高于维护老客户。传统模式中&#xff0c;客户与服务者之间缺乏有效连接&#xff0c;导致单次交易居多&#xff0c;客户流失率高。如何将一次性客户转化为长期稳定的忠实用户&#xff0c;…

作者头像 李华
网站建设 2026/3/27 16:37:16

Kimi K2.5重磅开源:杨植麟亲自揭秘强化学习基建的彻底重构

Kimi K2.5重磅开源&#xff1a;杨植麟亲自揭秘强化学习基建的彻底重构 各位铁子些&#xff0c;晓得噻&#xff0c;1月27号那个大事不&#xff1f;Kimi直接把他们K2.5模型给开源咯&#xff01;这哈不得行&#xff0c;必须要摆一哈这个龙门阵。更扎劲的是&#xff0c;杨植麟这个…

作者头像 李华
网站建设 2026/4/16 16:45:45

PDF3MD:把 PDF 转成 Markdown 和 Word 的开源神器

PDF3MD&#xff1a;把 PDF 转成 Markdown 和 Word 的开源神器 平时处理文档的时候&#xff0c;经常遇到这种尴尬情况&#xff1a;收到一个 PDF 文件&#xff0c;想转成 Markdown 方便编辑&#xff0c;或者想导出成 Word 文档&#xff0c;但手头的工具要么功能单一&#xff0c;…

作者头像 李华
网站建设 2026/4/17 9:14:42

好写作AI:还在多个文档间“精神分裂”?让AI分身成你的专项写作助理

当你同时在写开题报告、课程论文和实习总结&#xff0c;大脑是不是已经像一锅同时烧着三道菜的乱炖&#xff1f;毕业论文、课程小论文、实习报告、项目申请书……这些deadline总喜欢扎堆出现&#xff0c;像一群约好来讨债的。在多个写作任务间反复横跳&#xff0c;效率低不说&a…

作者头像 李华
网站建设 2026/4/17 5:37:19

Electron 快速入门教程

Electron 是一个基于 Node.js 和 Chromium 的跨平台桌面应用开发框架&#xff0c;你可以用 HTML、CSS、JavaScript 构建 Windows、macOS、Linux 三端一致的桌面应用&#xff0c;比如 VS Code、Figma 都是基于 Electron 开发的。 本教程会带你从 环境搭建 到 打包第一个应用&am…

作者头像 李华
网站建设 2026/4/5 1:25:29

Python 金融初级学习计划(金融专业学生版)

目录 核心设计原则&#xff08;兴趣提升关键&#xff09; 前置准备&#xff08;1 天搞定&#xff0c;零门槛&#xff09; 1. 工具安装&#xff08;一键完成&#xff0c;不用配环境&#xff09; 2. 数据来源&#xff08;免费无门槛&#xff09; 第一阶段&#xff1a;入门准…

作者头像 李华