Java 基础知识总结(超详细整理)

以下是 Java 基础知识超详细总结(2025–2026 视角),内容覆盖从零基础到面试/日常开发最常使用的核心知识点。结构按逻辑顺序组织,包含代码示例、对比表格、常见陷阱和面试高频点,适合新手系统学习 + 老鸟快速复习

重点模块:语法 → 数据类型 → 面向对象 → 异常 → 集合 → 常用类 → 关键字/修饰符 → Java 8+ 新特性 → 其他高频基础。

1. Java 概述与特性(面试常问开场)

特性说明2026 年实际意义
一次编写,到处运行字节码 + JVM 解释执行跨平台仍是最大卖点(云原生、容器化)
面向对象封装、继承、多态核心设计思想
健壮性自动垃圾回收、无指针、异常处理生产环境崩溃率低
多线程支持Thread / Runnable / Executor虚拟线程(Java 21+)极大降低门槛
安全性类加载器 + 字节码校验 + SecurityManager企业级首选
生态丰富Spring 全家桶、Netty、Dubbo、Kafka 等后端霸主地位稳固

2026 年新增共识:Java 不再“老旧”,虚拟线程 + 结构化并发 + 记录类 + 模式匹配 + 密封类让它在并发、API 设计上非常现代。

2. 基本数据类型 & 包装类(自动装箱/拆箱高频)

类型字节默认值包装类缓存范围(Integer)面试坑点
byte10Byte
short20Short
int40Integer-128 ~ 127== vs equals、缓存导致诡异结果
long80LLong字面量要加 L
float40.0fFloat精度丢失严重
double80.0DoubleBigDecimal 替代浮点运算
char2CharacterUnicode
boolean~1falseBooleannew Boolean(“true”) 陷阱

自动装箱/拆箱示例 + 坑

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 e = new Integer(100); // 显式 new,不走缓存
System.out.println(a == e);   // false

建议:数值比较统一用 equals()compareTo(),避免 == 踩坑。

3. 面向对象三大特性(必考)

3.1 封装

  • private 修饰字段 + public getter/setter
  • 好处:隐藏实现、控制访问、便于维护

3.2 继承

  • extends(单继承)
  • super() 调用父类构造、super. 调用父类成员
  • 方法重写(@Override)规则:同名、同参、返回值兼容、访问权限不严格、异常不扩大

3.3 多态

  • 编译看左(父/接口类型),运行看右(实际对象)
  • 两种形式:
  1. 方法重载(Overload)—— 编译时多态
  2. 方法重写(Override)—— 运行时多态

多态经典代码

Animal animal = new Dog();    // 向上转型
animal.eat();                 // 调用 Dog 的 eat() → 运行时多态

4. final、static、this、super(高频关键字)

关键字修饰对象含义常见考点
final不能被继承String 为什么是 final
方法不能被重写
变量常量(基本类型值不可变,引用地址不变)final 局部变量、final 成员变量初始化
static成员变量类变量,所有对象共享static 代码块执行时机
方法类方法,不能访问 this/super、非静态成员static 工具类设计
this当前对象引用this() 调用本类构造、区分同名变量
super父类对象引用super() 调用父类构造、super. 调用父成员

5. 异常处理(try-catch-finally & throws)

结构

try {
    // 可能抛异常代码
} catch (IOException | SQLException e) {  // Java 7+ 多 catch
    // 处理
} catch (Exception e) {
    // 兜底
} finally {
    // 必定执行(释放资源)
}

throw vs throws

  • throw:手动抛出异常(方法内部)
  • throws:声明方法可能抛出的异常(方法签名)

常见异常分类

  • Error:严重问题(如 OutOfMemoryError)
  • Exception
  • RuntimeException(非检查):NullPointerException、ArrayIndexOutOfBoundsException
  • Checked Exception:IOException、SQLException(必须处理)

6. 集合框架(Collection & Map)—— 面试重灾区

整体架构(2026 仍未变):

  • Collection
  • List(有序、可重复)
    • ArrayList(数组,查询快)
    • LinkedList(双向链表,增删快)
    • Vector(线程安全,基本淘汰)
  • Set(无序、不可重复)
    • HashSet(哈希表)
    • LinkedHashSet(插入顺序)
    • TreeSet(红黑树,排序)
  • Queue
    • PriorityQueue(堆)
    • ArrayDeque(双端队列)
  • Map(键值对)
  • HashMap(数组+链表+红黑树)
  • LinkedHashMap(插入/访问顺序)
  • TreeMap(红黑树,键排序)
  • ConcurrentHashMap(高并发首选)

HashMap 1.8 核心变化

  • 链表长度 > 8 且数组长度 ≥ 64 → 转红黑树
  • 扩容时重新 hash(高位参与)

ConcurrentHashMap 1.8:放弃 Segment,分段锁 → CAS + synchronized(锁链表/树头)

7. 常用类(String / StringBuilder / 包装类)

  • String:不可变(final char[])、常量池机制
  • StringBuilder:可变、单线程高性能
  • StringBuffer:可变、线程安全(synchronized)

BigDecimal(金钱计算必用):

BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
System.out.println(a.add(b));  // 0.3 而不是 0.30000000000000004

8. Java 8+ 核心新特性(面试必问)

  • Lambda 表达式 + 函数式接口(@FunctionalInterface)
  • Stream API(filter/map/reduce/collect)
  • Optional(防 NPE)
  • 默认方法 & 静态方法(接口)
  • 方法引用(::)
  • 新日期时间 API(LocalDate / LocalDateTime / Duration)
  • 记录类(record,Java 16+)—— 不可变数据载体
  • 密封类(sealed,Java 17+)

Stream 经典示例

List<String> list = Arrays.asList("apple", "banana", "cherry");
list.stream()
    .filter(s -> s.length() > 5)
    .map(String::toUpperCase)
    .forEach(System.out::println);

9. 其他高频基础知识点

  • 接口 vs 抽象类:接口(多实现)、抽象类(单继承 + 状态)
  • 泛型:擦除机制、上界/下界通配符(? extends / ? super)
  • 反射:Class.forName、getMethod、invoke(Spring IOC 基础)
  • 枚举:enum + values() + valueOf()
  • 注解:@Override / @Deprecated / 元注解(@Target/@Retention)
  • 内部类:成员内部类、静态内部类、局部内部类、匿名内部类

一句话总结
Java 基础 = 语法糖 + 面向对象思想 + 内存模型理解 + 集合/并发底层 + 异常安全意识

这份总结覆盖了 90%+ 的 Java 基础面试范围(校招/社招/实习)。
如果你想针对某个模块(比如集合底层源码、JVM 内存结构、Java 8 Stream 原理)要更详细的展开、代码示例或面试追问链路,直接告诉我,我可以继续深挖。祝学习顺利,Offer 多多!

文章已创建 5245

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部