01 — Java语言基础索引
定位: Java 语言最核心的类型系统 — 基本类型、String、Object 类构成一切 Java 程序的基石 面试高频度: ⭐⭐⭐⭐⭐
一、板块在体系中的位置
┌─────────────────────────────────────────────────────────────┐
│ Java 知识体系全景图 │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ 01-Java语言基础 ← 你在 这里 │ │
│ │ 基本类型 · 运算符 · String · Object │ │
│ └──────────────────┬───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ 02-面向对象核心 · 03-集合框架 · 04-泛型与注解 │ │
│ └──────────────────┬───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ 06-IO/NIO · 07-Lambda/Stream · 08-多线程与并发 │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ → 每一行 Java 代码都建立在这个板块之上 │
└─────────────────────────────────────────────────────────────┘二、知识全景图
┌─────────────────────────────────────────────────────────────┐
│ Java 类型系统全景 │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 数据类型 │ │
│ │ ┌──────────────────────┐ │ │
│ │ │ 基本类型 (8种) │ 引用类型 │ │
│ │ │ byte/short/int/... │ class/interface/... │ │
│ │ │ float/double/char/ │ │ │
│ │ │ boolean │ │ │
│ │ └──────────────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────┐ ┌────────────────────┐ │
│ │ 自动转换规则 │ │ String (不可变) │ │
│ │ 强制转换规则 │ │ Object (所有基类) │ │
│ └──────────────┘ └────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 核心考点: │ │
│ │ ① 8种基本类型的内存占用与默认值 │ │
│ │ ② String 不可变性的设计动机 + 常量池机制 │ │
│ │ ③ equals/hashCode 契约 + == vs equals 区别 │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘三、子专题导航
| # | 主题 | 面试频率 | 核心内容 |
|---|---|---|---|
| **数据类型与运算符** | 数据类型与运算符 | ⭐⭐⭐⭐ | 8种基本类型的设计、自动/强制类型转换、运算符优先级 |
| **String深度解析** | String深度解析 | ⭐⭐⭐⭐⭐ | 不可变性动机、常量池、StringBuilder/StringBuffer、intern() |
| **Object类与通用方法** | Object类与通用方法 | ⭐⭐⭐⭐⭐ | equals/hashCode 契约、clone 深浅拷贝、finalize |
四、核心考点速记
考点 1:8 种基本类型的内存占用
┌──────────┬────────────┬──────────┬──────────┐
│ 类型 │ 内存(位) │ 默认值 │ 范围 │
├──────────┼────────────┼──────────┼──────────┤
│ byte │ 8 │ 0 │ -128~127 │
│ short │ 16 │ 0 │ ±3.2万 │
│ int │ 32 │ 0 │ ±21亿 │
│ long │ 64 │ 0L │ 很大 │
│ float │ 32 │ 0.0f │ 科学计数 │
│ double │ 64 │ 0.0d │ 更大 │
│ char │ 16 │ '�' │ 0~65535 │
│ boolean │ ~8(虚拟) │ false │ true/false│
└──────────┴────────────┴──────────┴──────────┘考点 2:String 不可变性的设计
java
String s = "hello";
s = s + " world"; // 不是修改"hello",而是创建新对象为什么不可变? 线程安全(无需同步)、常量池复用(节省内存)、哈希值缓存(HashMap 用 String 做 key 的动机)
考点 3:equals/hashCode 契约
如果 a.equals(b) == true
→ 则 a.hashCode() == b.hashCode() (必须)
如果 a.hashCode() == b.hashCode()
→ a.equals(b) 可能 true 也可能 false (哈希冲突)五、面试高频追问一览
| 追问 | 关联笔记 | 频次 |
|---|---|---|
| float 和 double 为什么不能用于精确计算? | **数据类型与运算符** | ⭐⭐⭐⭐ |
| String 不可变怎么理解?final char[] 够吗? | **String深度解析** | ⭐⭐⭐⭐⭐ |
| String s = new String("a") 创建了几个对象? | **String深度解析** | ⭐⭐⭐⭐⭐ |
| 为什么重写 equals 必须重写 hashCode? | **Object类与通用方法** | ⭐⭐⭐⭐⭐ |
📚 相关文件
- **02-面向对象核心** — OOP 建立在此基础之上
- **泛型注解索引** — 泛型对类型的进一步抽象
- **Java文库设计文档** — 返回总纲