Skip to content

Java 核心

从基础语法到面向对象,从异常处理到泛型与集合框架。


面向对象基础

final 关键字

修饰变量:基本类型的值不可变,引用类型的地址不可变但内容可变 修饰方法:不能被子类重写 修饰类:不能被继承(如 String、Integer)

权限修饰符

public > protected > 默认(default) > private public:所有类可访问 protected:同包 + 子类 默认:仅同包 private:仅本类

多态

同一个行为具有多个不同表现形式 条件:继承 + 重写 + 父类引用指向子类对象 Animal a = new Cat(); // 父类引用指向子类对象 成员变量编译看左边,运行看左边 成员方法编译看左边,运行看右边

抽象类与接口

抽象类 (abstract class)

不能实例化,可以有构造方法 可以有抽象方法和非抽象方法 子类必须实现所有抽象方法(除非子类也是抽象类) 一个类只能继承一个抽象类

接口 (interface)

所有方法默认 public abstract 所有变量默认 public static final 一个类可以实现多个接口 接口可以继承接口 JDK8+ 支持 default 方法和 static 方法

异常处理

异常体系

Throwable ├── Error(系统级错误,不可恢复) └── Exception ├── RuntimeException(运行时异常,可不处理) │ ├── NullPointerException │ ├── ArrayIndexOutOfBoundsException │ └── ClassCastException └── 非 RuntimeException(编译时异常,必须处理) ├── IOException └── SQLException

try-catch-finally

try:监控可能发生异常的代码 catch:捕获并处理异常(可以多个 catch 块) finally:无论是否异常都会执行(资源释放) try-with-resources:自动关闭实现了 AutoCloseable 的资源

throw 与 throws

throw:在方法体内手动抛出异常对象 throws:在方法声明处声明可能抛出的异常类型 异常链:可以将原始异常作为 cause 传入新异常

自定义异常

继承 Exception(编译时异常)或 RuntimeException(运行时异常) 提供无参构造和带 message 的构造方法

泛型

泛型基础

定义时使用类型参数(如 <T>),使用时指定具体类型 泛型类:class Box<T> { private T item; } 泛型方法:public <T> T getFirst(List<T> list) 泛型接口:interface Comparable<T>

泛型继承与通配符

泛型不具有协变性:List<String> 不是 List<Object> 的子类 上界通配符:<? extends Number> — 只能读取 下界通配符:<? super Integer> — 只能写入 无界通配符:<?> — 只能读取 Object

HashMap 原理

底层结构

JDK7:数组 + 链表(头插法) JDK8:数组 + 链表 + 红黑树(尾插法) 默认初始容量 16,负载因子 0.75 链表长度 > 8 且数组长度 > 64 时转为红黑树

put 流程

  1. 计算 key 的 hash 值:hash(key) ^ (hash >>> 16)
  2. 计算桶下标:hash & (capacity - 1)
  3. 桶为空 → 直接放入 Node
  4. 桶不为空 → 遍历链表/红黑树
  5. key 已存在 → 替换 value
  6. 链表长度超阈值 → 转红黑树
  7. 元素数量超过 threshold → 扩容(2 倍)

hash 碰突解决

链地址法:相同 hash 的元素以链表形式存储 红黑树优化:链表过长时查询效率从 O(n) 降为 O(log n) 扩容时元素重新分配位置

AI 应用开发 / Agent 开发实习生