《Java 100 天进阶之路》Java基础篇阶段性总结(第1~25篇)—— 这些坑你踩过几个?
·
🎯 Java基础篇阶段性总结(第1~25篇)—— 这些坑你踩过几个?
不背八股文,不堆概念。25篇已完结,是时候停下来回头看一看了。
本总结覆盖:基础语法、面向对象、异常、包装类、字符串、枚举、类加载等核心模块。
📌 本阶段学习路径图
第一阶段:Java基础语法与环境(第1~4篇)
↓
第二阶段:核心语法与面向对象(第5~20篇)
↓
第三阶段:字符串、Buffer、枚举、类加载(第21~25篇)
📚 各篇核心知识点速查
| 篇号 | 标题 | 一句话核心 | 面试必考 |
|---|---|---|---|
| 1 | 编程语言类型 & Java跨平台性 | 字节码+JVM实现跨平台 | JVM跨平台吗?为什么? |
| 2 | 配置Java环境变量 | JAVA_HOME与Path配置 | 为什么配置JAVA_HOME? |
| 3 | 为何要配置环境变量? | Path搜索顺序,多版本管理 | 多个JDK如何选择? |
| 4 | 秒懂数组拷贝,感知新境界 | System.arraycopy vs Arrays.copyOf | 浅拷贝与深拷贝区别 |
| 5 | 装箱和拆箱 | Integer缓存池-128~127 | 128==128是true还是false? |
| 6 | Java异常有哪几种 | 检查型异常、运行时异常、Error | try-catch-finally执行顺序 |
| 7 | Java面向对象简介 | 封装、继承、多态 | 多态的实现原理 |
| 8 | Java基本数据类型 | 8种基本类型及默认值 | int和Integer区别 |
| 9 | Java运算符简介 | 算术、逻辑、位运算符 | && 和 & 的区别 |
| 10 | Java操作符有哪些? | 运算符优先级、字面量 | 优先级最高的运算符 |
| 11 | Java控制台输入输出语句 | Scanner用法,nextLine陷阱 | nextInt后nextLine读不到? |
| 12 | Java对象、类、抽象类、构造函数 | 构造方法重载,this关键字 | 抽象类为什么可以有构造方法? |
| 13 | JDK和JRE、final与static、堆和栈 | JDK⊃JRE⊃JVM,static,堆栈内存 | static变量存储在哪? |
| 14 | Java final关键字详解 | final类、方法、变量 | String为什么是final? |
| 15 | Java控制流程语句 | if-else,switch,循环 | switch支持哪些类型? |
| 16 | 禁止使用Lombok | Lombok陷阱,继承场景equals错误 | 为什么大厂禁止Lombok? |
| 17 | Java常用包装类与自动装箱拆箱深入 | 包装类缓存,自动装箱性能 | Integer.valueOf(127) vs new Integer(127) |
| 18 | Java接口和抽象类的异同,default关键字 | 接口 vs 抽象类(5点区别) | default方法作用 |
| 19 | Java接口的作用和意义 | 解耦、多态、面向接口编程 | 为什么优先用接口? |
| 20 | Java初始化、构造器、对象创建的过程 | 静态块、实例块、构造方法顺序 | 父子类初始化顺序 |
| 21 | Java Object类 | equals、hashCode契约 | 重写equals必须重写hashCode? |
| 22 | Java字符串简介 | String不可变,常量池,StringBuilder | String拼接用+还是StringBuilder? |
| 23 | 缓冲区数据结构 ByteBuffer | ByteBuffer属性,flip作用 | 直接缓冲区 vs 堆缓冲区 |
| 24 | Java枚举类型 enum 用法 | 枚举单例,values(),ordinal() | 为什么推荐枚举单例? |
| 25 | Java类加载与初始化 | 类加载过程,双亲委派模型 | 双亲委派的好处 |
🔥 高频面试题汇总(本阶段)
一、基础语法与环境
- Java跨平台原理:源码→字节码→JVM→机器码,JVM屏蔽操作系统差异。
- 环境变量:
JAVA_HOME供第三方工具找JDK,Path让系统找java命令。 - 数组拷贝:
System.arraycopy底层C实现效率高,Arrays.copyOf返回新数组。 - 浅拷贝 vs 深拷贝:浅拷贝复制引用,深拷贝复制对象本身。
二、面向对象
- 封装、继承、多态:举例说明(如动物→狗叫)。
- 抽象类 vs 接口:构造方法、成员变量、多继承、设计理念等5点区别。
final关键字:类不可继承、方法不可重写、变量不可变(引用不可变但对象内容可变)。static:静态变量属于类,静态方法不能访问非静态成员。- 构造方法:不能被继承/重写,但可重载。子类构造方法默认调用父类无参构造。
- 初始化顺序:父类静态→子类静态→父类实例→父类构造→子类实例→子类构造。
thisvssuper:this调用本类其他构造器或成员,super调用父类。
三、异常、包装类、字符串、枚举等
- 检查型异常 vs 运行时异常:前者必须处理(如IOException),后者可改代码(如NullPointerException)。
- Integer缓存池:-128~127,
valueOf使用缓存,new总是新建对象。 - String不可变性好处:常量池安全、线程安全、hashCode可缓存。
- StringBuilder vs StringBuffer:前者线程不安全但快,后者线程安全(synchronized)。
- 枚举单例:JVM保证每个枚举常量唯一,且线程安全,防止反射攻击。
- 双亲委派模型:类加载器收到请求先委托父类,避免核心类被篡改。
🧨 避坑清单(来自25篇的真实踩坑记录)
| 坑点 | 错误写法 | 正确做法 |
|---|---|---|
| 环境变量 | 修改后不重启终端 | 重新打开命令行窗口 |
| 数组拷贝 | int[] b = a; 修改b影响a |
用 Arrays.copyOf(a, a.length) |
| 包装类比较 | Integer a=128; Integer b=128; a==b |
用 a.equals(b) 或 a.intValue()==b.intValue() |
| 异常处理 | 空catch块 | 至少 e.printStackTrace() 或打日志 |
| Lombok继承 | @Data 子类未设置 callSuper=true |
手动生成equals/hashCode或 @EqualsAndHashCode(callSuper=true) |
| 字符串拼接 | 循环中用 + |
用 StringBuilder |
| final引用 | 以为 final List 不能修改元素 |
元素可改,只是不能重新赋值引用 |
| 抽象类 | 子类未实现所有抽象方法 | 要么实现,要么子类也是抽象类 |
| 构造方法 | 忘了写无参构造,子类报错 | 显式写无参构造或用 @NoArgsConstructor |
🚀 下一阶段预告(第26~44篇)
接下来你将进入 注解、反射、代理、日期、NIO、泛型、JVM字节码 等高阶内容。你将学到:
- 手写
@Test注解,模拟JUnit - 反射扒开
private方法,读写私有字段 - JDK动态代理 vs CGLIB(Spring AOP底层原理)
LocalDate彻底取代Date和Calendar- NIO的
ByteBuffer和FileChannel - 泛型PECS原则(Producer Extends, Consumer Super)
javap查看字节码,理解语法糖- 反编译工具
jd-gui使用及中文乱码解决
👉 不想错过? 订阅专栏 或 关注作者,第一时间推送。
📖 姊妹篇推荐:面试备战双通道
学完基础篇,你还需要强化面试能力。我为你准备了两个互补的面试系列:
1️⃣ 外部系列:《Java面试图解笔记》
适合快速建立知识图谱,用图解+口诀记忆高频考点。
👉 点击进入《Java面试图解笔记》
2️⃣ 内部系列:本专栏进阶篇《Java面试200题精讲》
适合深度理解原理,每道题都有源码分析+避坑+实战扩展。
👉 本专栏后续将单独发布,敬请关注。
💡 建议学习路径:
- 先快速过一遍《图解笔记》建立面试知识框架
- 再跟随本专栏基础篇+进阶篇深度掌握原理
- 最后用《200题精讲》进行实战模拟,查漏补缺
🎁 福利:基础篇知识点总结PDF
为了方便复习,我把25篇的核心知识点、面试题、避坑表整理成了一份 PDF速查手册。
👉 获取方式:关注我的CSDN账号,在本文评论区留言“Java基础”或私信我,我会将PDF下载链接发送给你。
种一棵树最好的时间是10年前,其次是现在。
👉 回到完整目录导航
📌 本总结文章属于《Java 100 天进阶之路 | 从入门到上岗就业》系列。
👉 点击关注我,更新后第一时间收到推送!欢迎收藏、转发、评论。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)