乐途乐途
主页
  • 计算机基础

    • TCP/IP
    • Linux
    • HTTP
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C
    • C++
    • Java SE
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • Maven 入门
    • Maven 进阶
    • MyBatis
    • Spring
    • Spring MVC
  • Java

    • Spring Boot
    • Spring Cloud
    • Spring Cloud Alibaba
    • Spring Security
    • Spring AI
    • Spring Batch
    • Kafka
    • Java 设计模式
  • 缓存

    • Redis
  • 搜索引擎

    • Elasticsearch
  • 分布式协调

    • ZooKeeper
联系
阿里云
主页
  • 计算机基础

    • TCP/IP
    • Linux
    • HTTP
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C
    • C++
    • Java SE
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • Maven 入门
    • Maven 进阶
    • MyBatis
    • Spring
    • Spring MVC
  • Java

    • Spring Boot
    • Spring Cloud
    • Spring Cloud Alibaba
    • Spring Security
    • Spring AI
    • Spring Batch
    • Kafka
    • Java 设计模式
  • 缓存

    • Redis
  • 搜索引擎

    • Elasticsearch
  • 分布式协调

    • ZooKeeper
联系
阿里云
  • 学习路径
  • 第1章 Java概述与环境搭建

    • Java概述与环境搭建
    • Java语言概述
    • 解释型语言与编译型语言对比
    • JDK安装与配置
    • JDK、JRE、JVM 详解
    • HelloWorld程序详解
    • IDE 介绍
  • 第2章 标识符与基本数据类型

    • 章节导读
    • 变量概述
    • 常量概述
    • 基本类型与包装类
    • 字节型 byte
    • 短整型 short
    • 整型 int
    • 长整型 long
    • 单精度浮点型 float
    • 双精度浮点型 double
    • 字符型 char
    • 布尔型 boolean
    • 类型转换
  • 第3章 运算符与表达式

    • 章节导读
    • 算术运算符
    • 赋值运算符
    • 关系运算符
    • 逻辑运算符
    • 位运算符
    • 条件运算符
    • 运算符优先级
    • 表达式
  • 第4章 流程控制

    • 章节导读
    • 常见的程序运行流程
    • if-else 选择结构
    • switch 多分支选择
    • while 循环
    • do-while 循环
    • for 循环
    • break 与 continue
  • 第5章 数组

    • 章节导读
    • 一维数组
    • 多维数组
    • Arrays 工具类
  • 第6章 类与对象

    • 章节导读
    • 类与对象
    • 方法定义与调用
    • 构造方法
    • 封装
    • 访问修饰符
    • package 与 import
    • static 关键字
    • this 关键字
    • 参数传递 详解
    • 枚举
    • 成员内部类
    • 局部内部类
    • 静态内部类
    • 匿名内部类
  • 第7章 接口与继承

    • 章节导读
    • 继承
    • super 关键字
    • final 关键字
    • 多态
    • 向上转型与向下转型
    • 抽象类
    • 接口
    • 抽象类与接口对比
  • 第8章 注解

    • 章节导读
    • 注解基础
    • 元注解详解
    • 自定义注解
  • 第9章 常用类

    • 章节导读:Java 常用类
    • Object 类:万类之祖
    • 包装类:基本类型的对象化
    • String:不可变的字符串
    • StringBuffer:线程安全的可变字符串
    • StringBuilder:可变的字符串构建器
    • Math:数学运算工具类
    • Random:伪随机数生成器
    • 大数值运算 详解
    • 日期时间API 详解
  • 第10章 异常机制

    • 章节导读
    • 异常体系与分类
    • try-catch-finally
    • try-with-resources
    • throws 与 throw
    • 自定义异常
  • 第11章 泛型

    • 章节导读
    • 泛型基础
    • 通配符与PECS原则
    • 类型擦除
  • 第12章 集合框架

    • 章节导读
    • 集合框架概述
    • ArrayList
    • LinkedList
    • HashMap 详解
    • LinkedHashMap 详解
    • TreeMap 详解
    • HashSet
    • TreeSet 详解
    • TreeSet 与 Comparable
    • Collections 工具类详解
  • 第13章 IO流

    • 章节导读
    • IO流概述
    • 字节流
    • 字符流
    • 缓冲流
    • 转换流 详解
    • 序列化 详解
    • NIO与Files 详解
    • NIO与Files工具类
  • 第14章 多线程与并发

    • 第十六章 多线程与并发 —— 章节导读
    • 线程基础详解
    • synchronized 详解
    • Lock 与显式锁详解
    • volatile 详解
    • wait 与 notify 详解
    • ThreadLocal详解
    • 原子类详解
    • 并发工具类详解
    • 线程池详解
  • 第15章 反射

    • 章节导读
    • 反射概述与 Class 对象
    • Constructor 与对象创建
    • Field与Method详解
    • 反射应用详解
  • 第16章 JDK8新特性

    • 章节导读
    • Lambda 表达式
    • Stream API 基础
    • Stream API 高级详解
    • Optional 详解
    • 新日期时间API详解
  • 第17章 JDK9-11新特性

    • 章节导读
    • 模块化系统 — Project Jigsaw(JDK 9)
    • var 局部变量类型推断(JDK 10)
    • 集合工厂方法与增强(JDK 9 / 10 / 11)
    • 接口增强:private 方法(JDK 9)
    • Stream API 增强(JDK 9)
    • Optional 增强(JDK 9 / 10 / 11)
    • String 新增方法(JDK 11)
    • HTTP Client 与 Files 增强(JDK 11)
    • 直接运行 Java 源文件 — JEP 330(JDK 11)
  • 第18章 JDK12-17新特性

    • 章节导读
    • Switch 表达式(JDK 12 预览 / JDK 14 正式)
    • 文本块 Text Blocks(JDK 13 预览 / JDK 15 正式)
    • Records 记录类(JDK 14 预览 / JDK 16 正式)
    • 密封类 Sealed Classes(JDK 15 预览 / JDK 17 正式)
    • instanceof 模式匹配(JDK 14 预览 / JDK 16 正式)
    • Switch 模式匹配 — Pattern Matching for switch(JDK 17 预览 / JDK 21 正式)
    • Helpful NPE 与 String 增强(JDK 12 / JDK 14 / JDK 15)
    • Stream 增强(JDK 12 / JDK 16)
    • 日期时间增强 — Day Period 支持(JDK 16)
  • 第19章 JDK18-21新特性

    • 章节导读
    • 虚拟线程(JDK 19 预览 / JDK 20 第二预览 / JDK 21 正式)
    • 序列集合(JDK 21 正式)
    • Switch 模式匹配(JDK 17 预览 / JDK 18 第二预览 / JDK 20 第四预览 / JDK 21 正式)
    • Record 模式匹配(JDK 19 预览 / JDK 20 第二预览 / JDK 21 正式)
    • 未命名模式与变量(JDK 21 预览 / JDK 22 正式)
  • 第20章 JDK 22-25 新特性

    • 章节导读
    • 字符串模板(JDK 22 预览 / JDK 23 第二预览 / JDK 24 第三预览)
    • Stream Gatherers(JDK 22 预览 / JDK 24 第二预览)
    • 隐式声明类与实例方法(JDK 23 预览 / JDK 24 第二预览)
    • 原始类型模式匹配(JDK 24 预览)
  • 附录

    • Java 核心知识点
    • Java SE 专业术语
    • Java特性索引(JDK 8 → 25)

Java SE 专业术语

基础概念

Java 由 Sun Microsystems 于 1995 年发布的面向对象编程语言,核心理念是"Write Once, Run Anywhere",通过 JVM 实现跨平台运行。

JDK(Java Development Kit) Java 开发工具包,包含 JRE + 编译器(javac)、打包工具(jar)、文档工具(javadoc)等开发工具。

JRE(Java Runtime Environment) Java 运行环境,包含 JVM 和核心类库,仅能运行 Java 程序不能编译。从 Java 11 起不再单独发布 JRE。

JVM(Java Virtual Machine) Java 虚拟机,执行编译后的字节码,负责内存管理、垃圾回收、线程调度和安全检查。

字节码(Bytecode) Java 源码经 javac 编译后生成的中间代码(.class 文件),由 JVM 解释或 JIT 编译执行,是跨平台的关键。

JIT(Just-In-Time Compiler) 即时编译器,将热点字节码直接编译为本地机器码以提升执行效率,是 JVM 性能优化的核心技术。

JSR(Java Specification Request) Java 规范请求,由 JCP(Java Community Process)管理的 Java 平台标准化提案,每个 JSR 对应一个规范编号。

LTS(Long-Term Support) 长期支持版本,由 Oracle 提供长达数年的安全更新和技术支持。当前 LTS 版本有 Java 8、11、17、21。

GC(Garbage Collection) 垃圾回收,JVM 自动管理内存的机制,回收不再使用的对象占用的内存空间。


面向对象编程(OOP)

OOP(Object-Oriented Programming) 以对象为基本单元的编程范式,通过封装、继承、多态、抽象四大特性组织代码,提升可维护性和复用性。

对象(Object) 现实世界中事物的抽象,具有状态(字段/属性)和行为(方法),是类的实例化结果。

类(Class) 对象的模板或蓝图,定义了对象应具有的属性和方法。

封装(Encapsulation) 将数据(字段)和操作数据的方法绑定在一个类中,通过访问控制(private/protected/public)隐藏内部实现细节,仅暴露必要的公共接口。

继承(Inheritance) 子类(派生类)自动拥有父类(基类)的属性和方法,通过 extends 关键字实现。Java 只支持单继承(一个类只能有一个直接父类)。

多态(Polymorphism) 同一行为在不同对象上表现出不同形式的能力。Java 通过方法重写(Override)和父类引用指向子类对象实现运行时多态。

抽象(Abstraction) 提取对象共性特征而忽略具体细节的过程。Java 通过抽象类(abstract class)和接口(interface)实现。

抽象类(Abstract Class) 用 abstract 修饰的类,不能被实例化,可以包含抽象方法(无方法体)和具体方法(有方法体),可以有构造方法和成员变量。

接口(Interface) 定义行为契约的引用类型,只包含方法签名(Java 8+ 新增 default 和 static 方法,Java 9+ 新增 private 方法)。一个类可以实现多个接口。

default 方法(Default Method) [JDK 8+] 接口中的默认方法,提供方法默认实现。允许在不破坏已有实现类的情况下向接口添加新方法。

函数式接口(Functional Interface) [JDK 8+] 只包含一个抽象方法的接口,可通过 @FunctionalInterface 注解标记。Lambda 表达式的目标类型必须是函数式接口。

修饰符(Modifier) 用于修改类、方法、变量定义的关键字。包括访问修饰符(private/default/protected/public)和非访问修饰符(static/final/abstract/synchronized/volatile/transient)。

this 引用当前对象的实例,用于区分成员变量和局部变量,或在构造方法中调用本类的其他构造方法。

super 引用父类对象的引用,用于调用父类构造方法(super(args))或访问被子类覆盖的父类方法/字段。

构造方法(Constructor) 与类同名的特殊方法,在对象创建时被调用,用于初始化对象的状态。如果没有显式定义,编译器会生成默认无参构造方法。

方法重载(Overload) 在同一个类中定义多个同名方法但参数列表不同(参数类型、数量或顺序不同),编译期静态绑定。

方法重写(Override) 子类重新定义从父类继承的方法,方法签名完全相同,访问修饰符不能更严格。运行期动态绑定,是实现多态的核心。

向上转型(Upcasting) 将子类对象赋值给父类引用,自动进行,是安全的。

向下转型(Downcasting) 将父类引用转换回子类类型,需要显式强制转换,不安全的(可能抛出 ClassCastException)。Java 16+ 支持 instanceof 模式匹配简化语法。


泛型

泛型(Generics) [JDK 5+] 参数化类型机制,使类、接口、方法在定义时使用类型参数,在编译期进行类型检查,避免 ClassCastException。

类型参数(Type Parameter) 泛型声明中的占位符,如 <T>、<E>、<K, V>,使用时替换为具体类型。

类型擦除(Type Erasure) Java 泛型的实现机制,编译后泛型类型信息被移除,所有类型参数被替换为边界类型或 Object,并在必要时插入强制类型转换。

通配符(Wildcard) 泛型中使用 ? 表示未知类型。<? extends T> 为上界通配符(可读不可写),<? super T> 为下界通配符(可写不可读)。

PECS 原则(Producer Extends, Consumer Super) 泛型通配符使用指南:如果参数化类型是生产者(提供数据),用 extends;如果是消费者(接收数据),用 super。

原始类型(Raw Type) 不带类型参数的泛型类或接口,如 List(而非 List<String>)。仅为向后兼容保留,不推荐使用。

不可具化类型(Non-Reifiable Type) 运行时类型信息比编译时少的类型,如 List<String>(擦除后只剩 List)。不能用于 instanceof 检查和创建泛型数组。

桥接方法(Bridge Method) 编译器为维持泛型多态性自动生成的方法,在类型擦除后保证子类方法正确覆盖父类方法。


集合框架

集合(Collection) 存储和管理一组对象的容器。Java 集合框架(Java Collections Framework)是 java.util 包下一套统一的数据结构体系。

Collection 接口 集合框架的根接口之一(另一个是 Map),代表一组对象的容器。子接口包括 List、Set、Queue。

List 有序集合,允许重复元素,可通过索引访问。主要实现:ArrayList、LinkedList。

Set 不允许重复元素的集合,其判重依据 equals() 和 hashCode() 方法。主要实现:HashSet、TreeSet、LinkedHashSet。

Map 键值对映射结构,键不可重复,每个键最多映射一个值。主要实现:HashMap、TreeMap、LinkedHashMap、ConcurrentHashMap。

Queue / Deque 队列(先进先出)和双端队列(两端均可进出)。主要实现:ArrayDeque、PriorityQueue、LinkedList。

ArrayList 基于动态数组的 List 实现,随机访问 O(1),增删(非尾部)O(n),默认容量 10,扩容为 1.5 倍。最常用的 List 实现。

LinkedList 基于双向链表的 List 和 Deque 实现,随机访问 O(n),头尾增删 O(1)。

HashMap 基于哈希表的 Map 实现,JDK 8+ 采用数组+链表+红黑树结构。默认容量 16,负载因子 0.75,扩容为 2 倍。非线程安全。

紅黑树(Red-Black Tree) 自平衡二叉查找树,HashMap 在链表长度 ≥ 8 且数组长度 ≥ 64 时将链表转为红黑树,将查找复杂度从 O(n) 优化为 O(log n)。

TreeMap 基于红黑树的 Map 实现,键按自然顺序或指定 Comparator 排序。不允许 null 键。

LinkedHashMap HashMap 的子类,内部维护双向链表记录插入顺序或访问顺序(accessOrder 模式常用于 LRU 缓存)。

ConcurrentHashMap [JDK 5+] 线程安全的 HashMap。JDK 7 使用分段锁(Segment),JDK 8 改用 CAS + synchronized 锁单个桶节点,支持更高并发度。

Collections 工具类 提供对集合的静态操作工具方法,如排序(sort)、查找(binarySearch)、反转(reverse)、同步包装(synchronizedXXX)、不可变包装(unmodifiableXXX)。

Comparable 接口 自然排序接口,类的 compareTo() 方法定义默认排序规则。Collections.sort(list) 依赖此接口。

Comparator 接口 定制排序接口,compare() 方法定义外部比较规则。可与 Lambda 表达式结合使用 [JDK 8+]。

不可变集合(Immutable Collection) [JDK 9+] 通过 List.of()、Set.of()、Map.of() 创建的不可修改集合,不允许 null 元素。


异常处理

Throwable Java 异常体系的根类,所有错误和异常的父类。子类有 Error 和 Exception。

Exception 应用可以捕获并处理的异常。分为受检异常(Checked Exception)和非受检异常(RuntimeException)。

Error JVM 级别的严重错误(如 OutOfMemoryError、StackOverflowError),程序不应尝试捕获处理。

受检异常(Checked Exception) 编译期强制处理的异常(try-catch 或 throws 声明),如 IOException、SQLException。代表可恢复的外部条件。

运行时异常(RuntimeException / Unchecked Exception) 程序逻辑错误导致的异常,编译期不强制处理,如 NullPointerException、ArrayIndexOutOfBoundsException。

try-catch-finally Java 异常处理的核心结构。try 块包含可能抛出异常的代码,catch 块捕获并处理特定类型异常,finally 块中的代码无论是否异常都会执行。

try-with-resources [JDK 7+] 自动资源管理语法,在 try 后的括号中声明实现了 AutoCloseable 接口的资源,代码块结束后自动调用 close() 方法。

throws 方法声明中使用的关键字,表明该方法可能抛出指定类型的异常,由调用者负责处理。

throw 在代码中显式抛出异常对象的关键字。


I/O 流

流(Stream) 数据传输的抽象,代表一系列有序的数据。Java I/O 中分为字节流和字符流。

字节流(Byte Stream) 以字节(8 bit)为单位处理数据的 I/O 流,基类为 InputStream 和 OutputStream。用于处理二进制数据(图片、视频等)。

字符流(Character Stream) 以字符(16 bit Unicode)为单位处理数据的 I/O 流,基类为 Reader 和 Writer。用于处理文本数据,自动处理字符编码。

缓冲流(Buffered Stream) 在内存中维护缓冲区的 I/O 流,减少直接与磁盘/网络交互的次数,显著提升性能。如 BufferedReader、BufferedWriter。

转换流(Conversion Stream) 字节流到字符流的桥梁。InputStreamReader 将字节输入流转为字符输入流;OutputStreamWriter 反之。

序列化(Serialization) 将对象状态转换为字节序列的过程,通过实现 Serializable 接口标记可序列化类。

反序列化(Deserialization) 将字节序列还原为对象的过程。反序列化时不调用构造方法。

transient 修饰字段的关键字,标记该字段不参与序列化。

serialVersionUID 序列化版本号,用于验证序列化和反序列化时类的兼容性。不显式声明时编译器自动生成。

NIO(New I/O) [JDK 1.4+] 非阻塞 I/O 框架,引入 Channel(通道)、Buffer(缓冲区)、Selector(选择器),支持非阻塞网络 I/O。

NIO.2 [JDK 7+] 对 NIO 的扩展,引入 Path 接口(替代 File)、Files 工具类、文件系统监听(WatchService)、异步 I/O。


多线程与并发

进程(Process) 操作系统资源分配的基本单位,拥有独立的内存空间。进程间通信(IPC)开销较大。

线程(Thread) CPU 调度的最小单位,同一进程内的线程共享堆内存和方法区,每个线程有独立的栈和程序计数器。

并发(Concurrency) 多个线程在宏观上同时执行(时间片轮转),微观上可能是交替执行的。

并行(Parallelism) 多个线程在微观上同时执行(多核 CPU 每个核各跑一个线程)。

synchronized Java 内置的互斥同步关键字,可修饰方法或代码块,基于 JVM 的监视器锁(Monitor)实现。JDK 6 后经过偏向锁、轻量级锁等大量优化。

volatile 轻量级同步关键字,保证变量的内存可见性和禁止指令重排序,但不保证原子性。

Lock [JDK 5+]java.util.concurrent.locks 包中的接口,主要实现 ReentrantLock。与 synchronized 相比,支持可中断获取、尝试非阻塞获取、超时获取、公平锁。

CAS(Compare And Swap) 比较并交换,无锁乐观并发算法。通过 CPU 原子指令实现。Java 中通过 Unsafe 类和 AtomicXXX 原子类提供。

ABA 问题 CAS 的问题之一:一个值从 A 变为 B 再变回 A,CAS 检测时认为值未变化。通过版本号(AtomicStampedReference)解决。

线程池(ThreadPool) [JDK 5+] 复用线程的机制,通过 ExecutorService / ThreadPoolExecutor 管理线程的创建、复用和销毁,避免频繁创建线程的开销。

ThreadLocal 线程本地变量,为每个使用该变量的线程提供独立的副本。常用于数据库连接、Session 管理。必须调用 remove() 防止内存泄漏。

CountDownLatch [JDK 5+] 同步辅助类,允许一个或多个线程等待直到在其他线程中执行的一组操作完成(计数器归零)。

CyclicBarrier [JDK 5+] 同步辅助类,允许一组线程相互等待直到所有线程都到达一个公共屏障点,然后同时继续执行,可重复使用。

Semaphore [JDK 5+] 信号量,控制同时访问特定资源的线程数量,常用于限流。

BlockingQueue [JDK 5+] 阻塞队列,支持生产者-消费者模式。put/take 操作在队列满/空时阻塞。

虚拟线程(Virtual Thread) [JDK 21 正式] Project Loom 引入的轻量级用户态线程,由 JVM 调度而非 OS 调度,创建成本极低,适合高并发 I/O 密集型任务。

结构化并发(Structured Concurrency) [JDK 21 预览] 将一组相关的并发任务视为一个工作单元,任务间具有清晰的生命周期关系,一个任务失败可取消同组其他任务。

竞态条件(Race Condition) 多个线程同时访问共享数据且至少有一个线程在修改数据,导致结果依赖于线程执行时序的不确定性。

死锁(Deadlock) 两个或多个线程相互持有对方需要的锁资源而无限期等待的现象。

线程安全(Thread Safety) 类或方法在多线程环境下能正确运行,不需要调用方额外的同步措施。


JVM 与内存管理

堆(Heap) JVM 管理的最大内存区域,所有线程共享,用于存放对象实例和数组。是 GC 的主要作用区域。

虚拟机栈(Java Virtual Machine Stack) 线程私有的内存区域,每个方法调用对应一个栈帧,存放局部变量表、操作数栈、方法出口等。生命周期与线程相同。

元空间(MetaSpace) [JDK 8+] 取代永久代(PermGen)的线程共享区域,存储在本地内存中,存放类的元信息、运行时常量池、静态变量。

永久代(PermGen) [JDK 7 及之前] 方法区的一种实现,JVM 内存中固定大小的区域。JDK 8 起被元空间取代。

栈帧(Stack Frame) 虚拟机栈中的基本单元,每个方法调用对应一个栈帧的入栈和出栈。包含局部变量表、操作数栈、动态链接、方法返回地址。

程序计数器(Program Counter Register) 线程私有的内存区域,记录当前线程正在执行的字节码指令地址。不会出现 OOM。

GC Roots 可达性分析算法的起点集合,包括虚拟机栈中引用的对象、静态变量引用的对象、常量池引用的对象、JNI 引用的对象。

可达性分析(Reachability Analysis) 从 GC Roots 出发沿着引用链搜索,不可达的对象被判定为可回收。是 Java 主流 GC 的判断存活算法。

标记-清除(Mark-Sweep) 垃圾回收算法,先标记所有存活对象,然后清除未标记的对象。缺点是产生内存碎片。

标记-复制(Mark-Copy) 垃圾回收算法,将存活对象复制到新区域,然后清空原区域。无碎片但浪费一半内存,适用于新生代。

标记-整理(Mark-Compact) 垃圾回收算法,将存活对象向一端移动,然后清理边界外的内存。无碎片但移动成本高,适用于老年代。

STW(Stop-The-World) 垃圾回收时暂停所有用户线程的现象。GC 算法的核心优化目标之一是减少 STW 时间。

新生代(Young Generation) 堆中存放新创建对象的区域,包括 Eden 区和两个 Survivor 区。发生 Minor GC,频率高,速度快。

老年代(Old Generation) 堆中存放长期存活对象的区域,对象从新生代熬过多次 GC 后晋升到老年代。发生 Major GC / Full GC,频率低,耗时长。

G1(Garbage-First Garbage Collector) [JDK 7+,JDK 9+ 默认] 区域化分代垃圾回收器,将堆划分为大小相等的 Region,优先回收垃圾最多的区域,可设置预期停顿时间。

ZGC(Z Garbage Collector) [JDK 11+ 实验,JDK 15 正式] 超低延迟垃圾回收器,使用染色指针技术,目标停顿时间低于 1ms,支持 TB 级堆。

类加载器(ClassLoader) 负责将类的字节码加载到 JVM 中,生成 Class 对象。Java 使用双亲委派模型。

双亲委派模型(Parent Delegation Model) 类加载器在加载类时先委托父加载器查找,防止核心类被篡改,保证类型安全。

JNI(Java Native Interface) Java 本地接口,允许 Java 代码调用本地方法(通常用 C/C++ 写的动态库)。


反射与注解

反射(Reflection) 运行时动态获取类信息(Class 对象)、创建对象、调用方法、访问字段的机制。是框架(Spring、MyBatis)的核心基础。

Class 对象 JVM 为每个加载的类创建的 java.lang.Class 实例,包含类的完整结构信息,是反射的入口。

注解(Annotation) [JDK 5+] 为代码元素(类、方法、字段、参数等)添加元数据的标记,可在编译期或运行时通过反射读取。

元注解(Meta-Annotation) 用于修饰其他注解的注解,如 @Target(指定注解适用位置)、@Retention(指定保留策略)。

@Retention 指定注解的保留级别:SOURCE(源码,编译时丢弃)、CLASS(字节码,运行时不可获取)、RUNTIME(运行时可通过反射获取)。


Lambda 与 Stream

Lambda 表达式 [JDK 8+] 匿名函数的简洁写法,(参数) -> { 方法体 }。本质是函数式接口的实例,使 Java 支持函数式编程风格。

方法引用(Method Reference) [JDK 8+] Lambda 的进一步简化写法,ClassName::methodName。包括静态方法引用、实例方法引用、构造方法引用。

Stream API [JDK 8+] 函数式数据处理抽象,支持链式调用和惰性求值。操作分为中间操作(map/filter/sorted)和终端操作(collect/forEach/reduce)。

Optional [JDK 8+] 空值安全的容器类,鼓励显式处理 null 情况,减少 NullPointerException。提供 orElse()、ifPresent()、map() 等安全操作。

CompletableFuture [JDK 8+] 异步编程工具类,实现 Future 和 CompletionStage 接口,支持异步任务编排、回调、组合、异常处理。


新版本特性相关术语

var 类型推断 [JDK 10+] 局部变量类型推断关键字,编译器根据初始化表达式自动推断变量类型。仅用于局部变量,不能用于成员变量、方法参数和返回类型。

Record(记录类) [JDK 14 预览,JDK 16 正式] 不可变数据载体,自动生成构造方法、equals/hashCode/toString 和访问器方法。适用于数据传输对象(DTO)。

Sealed Class(密封类) [JDK 17 正式] 限制哪些类可以继承或实现当前类/接口,通过 permits 关键字声明允许的子类,增强类型系统的安全性。

Switch 表达式 [JDK 14 正式] 增强的 switch 语句,支持箭头语法(->)和返回值,可作为表达式使用。

模式匹配(Pattern Matching) [JDK 16+(instanceof)/ JDK 21+(switch 正式)] 在类型检查的同时自动完成类型转换和变量绑定,简化代码。instanceof 模式匹配(Java 16 正式),Switch 模式匹配(Java 21 正式)。

文本块(Text Block) [JDK 13 预览,JDK 15 正式] 多行字符串字面量,用 """...""" 包裹,自动处理缩进和换行,简化 SQL、JSON、HTML 等多行文本的编写。

模块化(Module System / Project Jigsaw) [JDK 9+] 将 JDK 本身和应用程序拆分为模块(module),通过 module-info.java 声明模块依赖和暴露的包,提升封装性和可维护性。

HTTP Client [JDK 11 正式] 全新的 HTTP 客户端 API(java.net.http),支持 HTTP/2 和 WebSocket,提供同步/异步两种调用方式。


其他重要术语

自动装箱(Autoboxing)与拆箱(Unboxing) [JDK 5+] 自动装箱:编译器将基本类型自动转换为对应的包装类;自动拆箱:反之。依赖 valueOf() 和 xxxValue() 方法。

String 常量池(String Pool) JVM 在堆中维护的 String 对象池。使用字面量 "abc" 创建的字符串自动存入池中,相同字面量复用同一对象。

intern() String 方法,将字符串放入常量池(如果池中不存在),返回池中的引用。

final 修饰类时该类不能被继承;修饰方法时该方法不能被子类重写;修饰变量时该变量只能被赋值一次(基本类型值不可变,引用类型地址不可变)。

static 静态修饰符。修饰成员变量为类变量(所有实例共享);修饰方法为类方法(可直接通过类名调用,不能访问实例成员);修饰代码块为静态初始化块(类加载时执行一次)。

equals() 与 hashCode() 契约 如果两个对象 equals() 返回 true,则它们的 hashCode() 返回值必须相等。反之不然(哈希冲突)。重写 equals() 必须同时重写 hashCode()。

深拷贝(Deep Copy)与浅拷贝(Shallow Copy) 浅拷贝:复制对象本身,但引用类型字段仍指向原对象的同一对象。深拷贝:复制对象及其引用的所有对象,完全独立。

不可变类(Immutable Class) 对象创建后状态不可修改的类。典型代表:String、基本类型包装类、BigInteger、LocalDate。要求:类 final、字段 private final、无 setter、getter 返回引用类型时做防御性拷贝。

SPI(Service Provider Interface) [JDK 6+] 服务提供者接口,Java 的扩展机制。通过在 META-INF/services/ 目录下配置实现类,运行时通过 ServiceLoader 加载。

JShell [JDK 9+] Java 的交互式编程环境(REPL),支持快速编写和测试代码片段,无需创建完整类文件。


版本说明:本术语表以 Java SE 8 为基础,标注 [JDK x+] 的术语表示从该版本开始引入。当前最新 LTS 为 Java 21。

上一页
Java 核心知识点
下一页
Java特性索引(JDK 8 → 25)