Java 基础知识总结(超详细整理)_java基础知识总结 超详细,收藏这篇就够了
以下是 Java 基础知识超详细总结(2026 年视角,基于 Java 21 LTS 及主流面试/实际开发需求)。这份整理力求全面、系统、易懂,覆盖从零基础到核心进阶的绝大部分内容。收藏这篇基本就够了(后续进阶如集合、并发、JVM、Spring 等可另开专题)。
内容分为 10 大模块,每模块包含核心概念、代码示例、易错点 & 面试高频考点。
1. Java 概述 & 运行机制(必背)
Java 三大特性(2026 常问):
- 一次编写,到处运行(平台无关性)
- 面向对象
- 健壮性(自动垃圾回收 + 异常处理)
JDK / JRE / JVM 区别(经典面试题):
- JDK = Java 开发工具包(开发 + 运行)
- JRE = Java 运行环境(仅运行)
- JVM = Java 虚拟机(真正执行字节码)
Java 程序执行流程:
源代码(.java) → javac 编译 → 字节码(.class) → 类加载器 → JVM(解释器 + JIT 编译器) → 机器码执行
Java 版本演进速记(面试常考):
- Java 8(2014):Lambda、Stream、Optional、默认方法
- Java 11(2018 LTS):模块化(JPMS)、var 局部变量类型推断
- Java 17(2021 LTS):密封类、记录类(record)、增强 switch
- Java 21(2023 LTS):虚拟线程(Project Loom)、结构化并发、Sequenced Collections
2. 基本数据类型 & 包装类
| 类型 | 字节 | 默认值 | 包装类 | 自动装箱/拆箱陷阱(面试必考) |
|---|---|---|---|---|
| byte | 1 | 0 | Byte | -128 ~ 127 |
| short | 2 | 0 | Short | -32768 ~ 32767 |
| int | 4 | 0 | Integer | 缓存 -128~127 |
| long | 8 | 0L | Long | 加 L |
| float | 4 | 0.0f | Float | 加 f |
| double | 8 | 0.0 | Double | 默认浮点 |
| char | 2 | ‘’ | Character | Unicode 0~65535 |
| boolean | ~1bit | false | Boolean | 不能用 0/1 代替 |
自动装箱/拆箱经典陷阱:
Integer a =100;Integer b =100;System.out.println(a == b);// true(缓存)Integer c =200;Integer d =200;System.out.println(c == d);// false(超出缓存范围,新对象)面试扩展:为什么 Integer 缓存 -128~127?(性能优化 + 常量池)
3. 运算符 & 优先级(易错点集中营)
优先级口诀(从高到低):
- 后缀(. [] () ++ --) > 前缀(++ – ! ~ new) > 算术 > 移位 > 关系 > 相等 > 位运算 > 逻辑 > 三元 > 赋值
复合赋值隐式转换(经典笔试题):
short s =1; s +=1;// 合法,等价 s = (short)(s + 1) s = s +1;// 编译错误!int 不能赋给 short字符串拼接优先级:
System.out.println(1+2+"3");// "33"System.out.println("1"+2+3);// "123"短路 vs 非短路:
- && / || 短路(左边确定就不算右边)
- & / | 不短路(两边都算,可能 NPE)
4. 流程控制(if / switch / 循环)
switch 增强(Java 17+):
String day ="MON";String type =switch(day){case"MON","TUE","WED","THU","FRI"->"工作日";case"SAT","SUN"->"周末";default->"非法";};for-each vs 传统 for:
for-each 底层调用 iterator,不能改集合大小
5. 面向对象核心(OOP)——三大特性 + 五大原则
- 封装:private + getter/setter
- 继承:extends(单继承),super()
- 多态:父类引用指向子类对象,运行时绑定
五大设计原则(SOLID):
- S:单一职责(一个类只干一件事)
- O:开闭原则(对扩展开放,对修改关闭)
- L:里氏替换(子类可替换父类)
- I:接口隔离(不要胖接口)
- D:依赖倒置(面向接口编程)
final 关键字全解:
- 变量:常量
- 方法:不可重写
- 类:不可继承
static 关键字:
- 静态变量/方法:类级别
- 静态代码块:类加载时执行(只一次)
6. 数组 & 常用类(String / StringBuilder / Math / Date)
数组初始化:
int[] arr =newint[5];// 全 0int[] arr2 ={1,2,3};// 静态初始化String 不可变性(面试核心):
String s ="hello"; s = s +" world";// 实际创建新对象,原 "hello" 不变String / StringBuilder / StringBuffer 对比:
| 类 | 可变性 | 线程安全 | 适用场景 |
|---|---|---|---|
| String | 不可变 | — | 常量、频繁拼接少 |
| StringBuilder | 可变 | 非安全 | 单线程高频拼接 |
| StringBuffer | 可变 | 安全 | 多线程(现已少用) |
常用 API:
- equals() vs ==(String 重写了 equals)
- intern()(字符串常量池)
7. 异常处理(try-catch-finally-throw-throws)
异常体系:
- Throwable
- Error(严重错误,如 OutOfMemoryError)
- Exception
- RuntimeException(非检查,如 NullPointerException)
- Checked Exception(必须处理,如 IOException)
经典写法(Java 7+ 多 catch / try-with-resources):
try(FileInputStream fis =newFileInputStream("file.txt")){// ...}catch(IOException|SQLException e){// ...}finally{// 一定执行(释放资源)}8. 常用工具类 & 枚举 & 记录类(Java 14+)
枚举(enum):
publicenumSeason{SPRING("春"),SUMMER("夏");privatefinalString name;Season(String name){this.name = name;}}记录类(record,Java 16+ 稳定):
publicrecordPoint(int x,int y){}// 自动生成 equals、hashCode、toString、getter9. 泛型(Generics)基础
常用写法:
List<String> list =newArrayList<>();// 钻石语法(Java 7+)泛型擦除:编译后泛型信息丢失(运行时 List 和 List 是同一个类)
通配符:
? extends T:上限(可读不可写)? super T:下限(可写不可读)
10. 反射 & 注解基础(入门级)
反射三要素:
- Class 对象
- Field / Method / Constructor
获取 Class 对象三种方式:
Class<?> clazz1 =Class.forName("java.lang.String");Class<?> clazz2 =String.class;Class<?> clazz3 =newString().getClass();注解入门(Java 5+):
@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public@interfaceMyAnnotation{Stringvalue()default"hello";}最后总结:Java 基础学习路径建议(2026 版)
- 环境搭建 + 语法(1 周)
- 面向对象 + 数组/字符串(2 周)
- 集合框架预习 + 异常(1 周)
- 多线程入门 + IO 流(2 周)
- 泛型 + 反射 + 注解(1 周)
- 刷 LeetCode 简单题 + 复习易错点(持续)
一句话背诵口诀(面试速记):
“八基四引,装箱拆箱陷阱多;运算优先短路别算错;OOP 三大五原则记牢,final static 位置要分清;String 不可变,Builder 可变快;异常分 checked 和 runtime,反射注解入门要会写。”
这份总结基本覆盖 90% 的 Java 基础面试和实际开发需求。如果需要针对某个模块(如集合、多线程、JVM)再做超详细展开,或者附上代码练习题,继续告诉我~