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

下面是一份2026年视角下仍然非常实用Java SE 基础知识超详细总结(面向初学者到中级开发者),内容按逻辑顺序组织,重点突出常考、易错、高频使用的部分。

我会尽量用简洁 + 对比 + 记忆点 + 代码示例的方式呈现,便于快速复习和理解。

一、Java语言基础与环境

概念全称主要作用包含内容/备注
JDKJava Development Kit开发 + 运行包含JRE + 编译器javac + 工具(javadoc、jar等)
JREJava Runtime Environment只运行包含JVM + 核心类库
JVMJava Virtual Machine真正执行字节码的地方HotSpot(主流)、J9、GraalVM 等实现

Java跨平台原理一句话总结
程序员写 .javajavac 编译成平台无关的 .class(字节码) → 不同平台的JVM把字节码解释/JIT编译成对应机器码执行。

2025–2026主流版本
企业主流:Java 8 / 11 / 17 / 21(LTS)
最推荐学习路径(2026):先精通 17/21 的新特性,再向下兼容 8 和 11

二、基本数据类型与包装类(8种)

类型字节默认值包装类缓存范围(==)常考点
byte10Byte-128 ~ 127
short20Short-128 ~ 127
int40Integer-128 ~ 127valueOf() 有缓存,new 没有
long80LLong-128 ~ 127后缀 L/l
float40.0fFloat后缀 F/f,精度丢失严重
double80.0Double默认浮点类型
char2Character0 ~ 127(ASCII)可存中文(Unicode)
boolean~falseBooleantrue/false(不是对象)不能用 1/0 赋值

经典面试题示例

Integer a = 100;     // 自动装箱 → Integer.valueOf(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);
System.out.println(a == e);      // false (一个是缓存对象,一个是new出来的新对象)

三、运算符优先级(高到低,常见记忆口诀)

  1. () [] .
  2. ! ~ ++ -- (前置>后置)
  3. * / %
  4. + -
  5. << >> >>>
  6. < <= > >= instanceof
  7. == !=
  8. &
  9. ^
  10. |
  11. &&
  12. ||
  13. ? :
  14. = += -= 等赋值

四、面向对象三大特性 + 三大修饰符对比

特性/关键字privatedefaultprotectedpublic记忆口诀
本类
同包דdefault是包访问”
子类××√(不同包也行)“protected护子类”
其他包××דpublic全世界”

三大特性对比表(常考)

特性核心思想实现方式面试最常问点
封装隐藏实现细节private + getter/setter为什么要有setter?(控制、校验、日志等)
继承代码复用extends(单继承)构造器不继承、final类不能被继承
多态同一接口不同实现方法重写 + 父类引用子对象向上转型、向下转型(instanceof + 强转)

五、常用关键字对比(超高频)

关键字作用范围是否可修饰类是否可修饰方法是否可修饰变量常考对比
final不可变√(不能继承)√(不能重写)√(常量)final、finally、finalize区别
static类级别×√(静态方法)√(静态变量)静态代码块 > 构造块 > 构造方法
abstract强制子类实现√(抽象类)√(抽象方法)×抽象类 vs 接口(Java 8后区别缩小)
interface规范(多实现)√(默认public)√(public static final)Java 8+ default/static方法

六、String / StringBuilder / StringBuffer(最常考)

是否可变线程安全性能底层实现使用场景
String不可变安全final char[]常量、key、配置文件
StringBuilder可变不安全最快char[] + count单线程大量拼接
StringBuffer可变安全较慢char[] + count多线程环境下的字符串拼接(少用)

经典写法对比(性能差距巨大)

// 差:创建了大量临时String对象
String s = "";
for (int i = 0; i < 10000; i++) {
    s += i;           // 每次都new String
}

// 推荐:Java 5+ 几乎都用 StringBuilder
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
    sb.append(i);
}
String result = sb.toString();

七、集合框架对比(2026年仍最核心)

List(有序、可重复)

实现类底层结构随机访问插入/删除效率线程安全适用场景
ArrayList动态数组快 O(1)慢 O(n)查询多、尾插多
LinkedList双向链表慢 O(n)快 O(1)频繁头尾增删
Vector动态数组是(synchronized)古老遗留类(基本不用)

Set(无序、不可重复)

实现类底层是否有序是否允许null性能特点
HashSetHashMap无序允许1个null最快(O(1))
LinkedHashSetHashMap+链表插入顺序允许1个null略慢于HashSet,但有序
TreeSet红黑树自然/自定义排序不允许nulllog(n),自带排序

Map(键值对)

实现类底层是否有序key是否可nullvalue是否可null性能特点
HashMap数组+链表+红黑树无序允许1个null允许最常用,O(1)
LinkedHashMap数组+链表+红黑树+双向链表插入/访问顺序允许1个null允许维护插入/访问顺序
TreeMap红黑树key排序不允许null允许自带key排序,log(n)
Hashtable数组+链表无序不允许null不允许null古老、synchronized

八、异常体系(两张图就能记住)

Throwable(顶层)
├── Error(严重错误,程序员一般不处理)
│   └── OutOfMemoryError / StackOverflowError ...
└── Exception(可恢复)
    ├── RuntimeException(非受检,unchecked)
    │   ├── NullPointerException
    │   ├── ArrayIndexOutOfBoundsException
    │   ├── ClassCastException
    │   └── ...
    └── 其他(受检,checked,必须处理)
        ├── IOException
        ├── SQLException
        └── ...

推荐处理风格(2026主流)

// 1. 尽量用具体异常,不要直接catch Exception
try {
    // ...
} catch (FileNotFoundException e) {
    // 处理文件不存在
} catch (IOException e) {
    // 其他IO异常
}

// 2. Java 7+ 多catch写法
} catch (FileNotFoundException | UnknownHostException e) {
    // ...
}

希望这份总结对你有帮助!如果想深入某个模块(比如 JVM内存结构、类加载机制、泛型擦除、多线程基础、IO/NIO、反射、枚举、Lambda、Stream 等),可以告诉我,我再给你展开更细的版本。加油~

文章已创建 3996

发表回复

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

相关文章

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

返回顶部