返回 随笔记录
随笔记录

一、Java语言基础

博主
大约 24 分钟

一、Java语言基础

范围:语法、OOP、集合、多线程、IO/NIO、反射、泛型、Lambda、Java新特性 知识点数量:172项 → 扩展至350+项 返回总目录


1.1 Java语法基础

1.1.1 数据类型与变量

  • 1. 基本数据类型(byte/short/int/long/float/double/char/boolean) - 掌握8种基本类型的取值范围、默认值和内存占用
  • 2. 引用数据类型(类、接口、数组) - 理解引用类型与基本类型的区别,掌握对象的创建和使用
  • 3. 类型转换(自动转换与强制转换) - 理解隐式类型转换规则,掌握显式转换的语法和风险
  • 4. 变量作用域(局部变量、实例变量、类变量) - 掌握不同作用域变量的生命周期和访问规则
  • 5. 常量定义(final关键字) - 掌握常量的声明方式和使用场景,理解final的不可变性
  • 6. 类型推断(var关键字) - 了解Java 10引入的局部变量类型推断,掌握使用场景和限制
  • 7. 包装类(Integer、Double等) - 掌握自动装箱和拆箱,理解缓存机制(-128~127)
  • 8. 字符串不可变性 - 理解String的final char[]实现,掌握字符串常量池
  • 9. StringBuilder vs StringBuffer - 掌握可变字符串,理解线程安全差异
  • 10. 数值格式化 - 掌握DecimalFormat、NumberFormat使用
  • 11. 日期时间API(旧) - 掌握Date、Calendar、SimpleDateFormat
  • 12. 日期时间API(新) - 掌握Java 8的LocalDate、LocalTime、LocalDateTime
  • 13. 时区处理 - 掌握ZoneId、ZonedDateTime、Instant
  • 14. 大数运算 - 掌握BigInteger、BigDecimal精确计算
  • 15. 随机数生成 - 掌握Math.random()、Random、ThreadLocalRandom
  • 16. 数学运算 - 掌握Math类常用方法,理解浮点数精度问题

1.1.2 运算符与表达式

  • 17. 算术运算符(+、-、*、/、%) - 掌握基本数学运算,理解整数除法和取模运算
  • 18. 关系运算符(==、!=、>、<、>=、<=) - 掌握比较运算,理解对象比较与值比较的区别
  • 19. 逻辑运算符(&&、||、!) - 掌握逻辑运算,理解短路求值机制
  • 20. 位运算符(&、|、^、~、<<、>>、>>>) - 掌握位操作,理解在性能优化和加密中的应用
  • 21. 赋值运算符(=、+=、-=等) - 掌握复合赋值运算,理解类型转换规则
  • 22. 三元运算符(? :) - 掌握条件表达式,理解与if-else的区别和使用场景
  • 23. 运算符优先级 - 掌握运算符优先级表,理解括号的使用时机
  • 24. 类型提升规则 - 理解二元运算中的类型提升
  • 25. 浮点数比较 - 掌握BigDecimal比较,避免==直接比较

1.1.3 流程控制

  • 26. if-else条件语句 - 掌握条件分支,理解多分支结构和嵌套if的使用
  • 27. switch-case语句 - 掌握多路分支,理解Java 12+的switch表达式
  • 28. for循环 - 掌握传统for循环,理解循环变量和迭代逻辑
  • 29. while循环 - 掌握while循环,理解前置条件判断的使用场景
  • 30. do-while循环 - 掌握do-while循环,理解后置条件判断的特点
  • 31. break与continue - 掌握循环控制语句,理解标签break的使用
  • 32. 增强for循环(foreach) - 掌握简化遍历语法,理解与迭代器的关系
  • 33. switch模式匹配 - 掌握Java 17+的switch模式匹配
  • 34. 循环嵌套与复杂度 - 理解多重循环的时间复杂度
  • 35. 无限循环与退出条件 - 掌握while(true)的使用场景

1.2 面向对象编程

1.2.1 类与对象

  • 36. 类的定义与实例化 - 掌握类的声明、构造函数和对象创建
  • 37. 成员变量与方法 - 理解实例变量和实例方法,掌握this关键字
  • 38. 构造函数(默认、带参、重载) - 掌握构造函数重载,理解构造链
  • 39. 代码块(静态块、实例块、局部块) - 理解初始化顺序,掌握静态块的使用场景
  • 40. 内部类(成员、静态、局部、匿名) - 掌握四种内部类,理解适用场景和限制
  • 41. 枚举类(enum) - 掌握枚举定义,理解枚举的方法、字段和构造函数
  • 42. 记录类(record) - 掌握Java 14+的记录类,理解不可变数据载体
  • 43. 密封类(sealed) - 掌握Java 17密封类,理解继承控制
  • 44. 对象初始化顺序 - 掌握静态变量→静态块→实例变量→实例块→构造函数
  • 45. 方法签名与重载 - 理解方法签名组成,掌握重载规则
  • 46. 可变参数 - 掌握...语法,理解底层数组实现
  • 47. 对象生命周期 - 理解创建、使用、垃圾回收三阶段
  • 48. 浅拷贝与深拷贝 - 掌握clone方法,理解引用复制问题
  • 49. 对象比较 - 掌握equals方法重写,理解compareTo接口
  • 50. toString方法 - 掌握对象字符串表示,理解调试重要性

1.2.2 封装、继承、多态

  • 51. 访问控制(private、default、protected、public) - 掌握四种访问级别,理解封装原则
  • 52. getter/setter方法 - 掌握属性访问器,理解Lombok的@Data注解
  • 53. 继承(extends关键字) - 掌握单继承机制,理解super关键字和构造函数调用
  • 54. 方法重写(@Override) - 掌握重写规则,理解协变返回类型
  • 55. 多态(向上转型、向下转型) - 掌握多态机制,理解运行时绑定
  • 56. instanceof关键字 - 掌握类型检查,理解Java 16的模式匹配
  • 57. 方法隐藏与变量隐藏 - 理解静态方法的隐藏机制,区分重写与隐藏
  • 58. 继承的优缺点 - 理解代码复用与紧耦合的权衡
  • 59. 组合优于继承 - 掌握委托模式,理解继承替代方案
  • 60. 方法调用绑定 - 理解静态绑定与动态绑定
  • 61. 构造函数的继承 - 理解super()调用和隐式默认构造
  • 62. final类与final方法 - 掌握不可继承的设计,理解安全考虑

1.2.3 抽象类与接口

  • 63. 抽象类(abstract class) - 掌握抽象类定义,理解抽象方法的作用
  • 64. 接口定义(interface) - 掌握接口声明,理解接口与类的区别
  • 65. 接口默认方法(default) - 掌握Java 8默认方法,理解接口演进策略
  • 66. 接口静态方法 - 掌握Java 8接口静态方法,理解工具方法组织
  • 67. 接口私有方法 - 掌握Java 9私有方法,理解代码复用
  • 68. 多接口实现 - 掌握接口多实现,理解默认方法冲突解决
  • 69. 标记接口 - 理解Serializable等标记接口的作用机制
  • 70. 函数式接口 - 掌握@FunctionalInterface注解,理解SAM类型
  • 71. 接口 vs 抽象类 - 理解设计选择,掌握适用场景
  • 72. 接口隔离原则 - 掌握ISP原则,理解细粒度接口设计
  • 73. 接口多继承 - 理解接口可以extends多个接口
  • 74. 抽象工厂与接口 - 掌握接口在设计模式中的应用
  • 75. SPI机制 - 掌握Service Provider Interface,理解接口扩展

1.3 集合框架

1.3.1 List集合

  • 76. ArrayList底层原理 - 掌握动态数组实现,理解扩容机制(1.5倍)
  • 77. LinkedList底层原理 - 掌握双向链表实现,理解节点结构和指针操作
  • 78. Vector与Stack - 理解线程安全的集合,了解历史遗留问题
  • 79. CopyOnWriteArrayList - 掌握写时复制机制,理解读多写少场景
  • 80. List遍历方式(for、迭代器、Stream) - 掌握多种遍历方式,理解并发修改异常
  • 81. List排序(Comparator、Comparable) - 掌握排序接口,理解Lambda表达式简化
  • 82. ArrayList vs LinkedList性能对比 - 理解随机访问和插入删除的性能差异
  • 83. ArrayList扩容机制详解 - 掌握grow方法,理解位运算优化
  • 84. LinkedList作为队列/栈 - 掌握addFirst/addLast/push/pop
  • 85. 列表子视图 - 掌握subList方法,理解视图与副本区别
  • 86. 列表批量操作 - 掌握addAll/removeAll/retainAll
  • 87. 并发修改异常 - 理解fail-fast机制,掌握Iterator.remove正确使用
  • 88. 列表查找 - 掌握indexOf/lastIndexOf,理解线性查找
  • 89. 列表替换 - 掌握set/rereplaceAll方法
  • 90. 不可变List - 掌握Collections.unmodifiableList和List.of

1.3.2 Set集合

  • 91. HashSet底层原理 - 掌握基于HashMap的实现,理解去重机制
  • 92. LinkedHashSet - 掌握插入顺序维护,理解双向链表+哈希表
  • 93. TreeSet底层原理 - 掌握红黑树实现,理解自然排序和定制排序
  • 94. EnumSet - 掌握枚举集合,理解位向量实现的高性能
  • 95. CopyOnWriteArraySet - 掌握线程安全Set,理解底层委托机制
  • 96. hashCode与equals约定 - 理解对象相等性判断,掌握重写规则
  • 97. Set去重原理 - 理解哈希冲突处理,掌握equals和hashCode协同
  • 98. Set集合运算 - 掌握并集、交集、差集操作
  • 99. TreeSet范围查询 - 掌握subSet/headSet/tailSet
  • 100. 集合去重技巧 - 掌握利用Set去重的最佳实践
  • 101. 自定义对象去重 - 掌握重写hashCode和equals的正确方式
  • 102. Set遍历顺序 - 理解不同Set的遍历顺序保证

1.3.3 Map集合

  • 103. HashMap底层原理 - 掌握数组+链表+红黑树结构,理解JDK 8优化
  • 104. HashMap扩容机制 - 掌握负载因子(0.75),理解rehash过程
  • 105. LinkedHashMap - 掌握插入/访问顺序,理解LRU缓存实现
  • 106. TreeMap底层原理 - 掌握红黑树实现,理解SortedMap接口
  • 107. ConcurrentHashMap - 掌握分段锁/CAS机制,理解高并发设计
  • 108. Hashtable - 理解线程安全Map,了解与ConcurrentHashMap的区别
  • 109. WeakHashMap - 掌握弱引用键,理解缓存和内存敏感场景
  • 110. IdentityHashMap - 掌握引用相等性判断,理解==与equals的区别
  • 111. HashMap vs HashTable vs ConcurrentHashMap - 理解三者区别和适用场景
  • 112. HashMap哈希算法 - 掌握扰动函数,理解高位运算
  • 113. HashMap树化阈值 - 理解TREEIFY_THRESHOLD=8和UNTREEIFY_THRESHOLD=6
  • 114. ConcurrentHashMap分段锁 - 理解JDK 7的Segment设计
  • 115. ConcurrentHashMap CAS - 掌握JDK 8的Node+CAS+syncled优化
  • 116. Map遍历方式 - 掌握keySet/values/entrySet/stream
  • 117. Map默认值处理 - 掌握getOrDefault/computeIfAbsent
  • 118. Map合并操作 - 掌握merge/compute/computeIfPresent
  • 119. Map排序 - 理解TreeMap排序和LinkedHashMap顺序
  • 120. Map容量设置 - 掌握初始化容量避免扩容
  • 121. ImmutableMap - 掌握Collections.unmodifiableMap和Map.of

1.3.4 Queue与Deque

  • 122. Queue接口 - 掌握add/offer/remove/poll/element/peek区别
  • 123. PriorityQueue - 掌握堆实现,理解自然排序和定制排序
  • 124. ArrayDeque - 掌握数组实现的双端队列,理解循环数组
  • 125. LinkedList作为Deque - 掌握双端队列操作
  • 126. BlockingQueue - 掌握阻塞队列,理解put/take方法
  • 127. ArrayBlockingQueue - 掌握有界阻塞队列
  • 128. LinkedBlockingQueue - 掌握可选有界阻塞队列
  • 129. PriorityBlockingQueue - 掌握优先级阻塞队列
  • 130. SynchronousQueue - 掌握同步队列,理解直接传递
  • 131. DelayQueue - 掌握延迟队列,理解Delayed接口
  • 132. 队列应用场景 - 掌握生产者消费者、任务调度

1.3.5 集合工具与算法

  • 133. Collections工具类 - 掌握排序、搜索、同步包装等方法
  • 134. Arrays工具类 - 掌握数组操作,理解asList的局限性
  • 135. 集合遍历(Iterator、ListIterator) - 掌握迭代器模式,理解fail-fast机制
  • 136. 集合排序算法 - 理解TimSort、MergeSort在集合中的应用
  • 137. 集合转数组 - 掌握toArray方法,理解泛型数组限制
  • 138. 不可变集合 - 掌握Collections.unmodifiableXXX,理解Java 9 List.of
  • 139. 集合二分查找 - 掌握Collections.binarySearch
  • 140. 集合最值 - 掌握Collections.max/min
  • 141. 集合填充与替换 - 掌握Collections.fill/replaceAll
  • 142. 集合反转与旋转 - 掌握Collections.reverse/rotate
  • 143. 集合随机打乱 - 掌握Collections.shuffle
  • 144. 集合频率统计 - 掌握Collections.frequency/disjoint
  • 145. 集合并行处理 - 理解Stream.parallel的性能考量

1.4 多线程与并发

1.4.1 线程基础

  • 146. 线程创建(继承Thread、实现Runnable) - 掌握两种创建方式,理解区别
  • 147. Callable与Future - 掌握带返回值的任务,理解异步结果获取
  • 148. 线程状态(NEW、RUNNABLE、BLOCKED等) - 掌握6种状态,理解状态转换
  • 149. 线程优先级与守护线程 - 理解优先级调度,掌握setDaemon使用
  • 150. 线程中断机制 - 掌握interrupt方法,理解中断状态检查
  • 151. ThreadLocal原理 - 掌握线程局部变量,理解内存泄漏问题
  • 152. 线程组(ThreadGroup) - 理解线程组织,了解现代替代方案
  • 153. 线程命名与标识 - 掌握线程ID和名称管理
  • 154. 线程join方法 - 掌握等待线程结束,理解超时join
  • 155. 线程sleep与yield - 掌握暂停和让步,理解与wait的区别
  • 156. 线程未捕获异常 - 掌握UncaughtExceptionHandler
  • 157. 虚拟线程(Java 21) - 掌握Project Loom,理解轻量级线程

1.4.2 同步与锁

  • 158. synchronized关键字 - 掌握对象锁和类锁,理解Monitor机制
  • 159. 同步代码块与方法 - 理解锁粒度,掌握锁优化策略
  • 160. volatile关键字 - 掌握可见性和禁止指令重排,理解不保证原子性
  • 161. Lock接口(ReentrantLock) - 掌握可重入锁,理解tryLock和lockInterruptibly
  • 162. ReadWriteLock - 掌握读写锁,理解读写分离场景
  • 163. StampedLock - 掌握Java 8乐观锁,理解性能优势
  • 164. 死锁产生条件与预防 - 理解四个必要条件,掌握预防策略
  • 165. 活锁与饥饿 - 理解并发问题,掌握解决方案
  • 166. 锁升级过程 - 掌握无锁→偏向锁→轻量级锁→重量级锁
  • 167. 锁消除与锁粗化 - 理解JVM锁优化
  • 168. 公平锁与非公平锁 - 掌握ReentrantLock公平性设置
  • 169. 条件变量(Condition) - 掌握await/signal,理解多条件等待
  • 170. 信号量(Semaphore) - 掌握资源限流,理解acquire/release
  • 171. 自旋锁 - 理解CAS循环等待,掌握适用场景
  • 172. 读写锁降级 - 掌握StampedLock的乐观读转悲观读

1.4.3 并发工具类

  • 173. AtomicInteger等原子类 - 掌握CAS原理,理解ABA问题
  • 174. CountDownLatch - 掌握倒计时门闩,理解等待多线程完成
  • 175. CyclicBarrier - 掌握循环屏障,理解线程集合点
  • 176. Semaphore - 掌握信号量,理解资源限流
  • 177. Exchanger - 掌握线程间数据交换,理解双向通信
  • 178. Phaser - 掌握Java 7阶段同步器,理解动态注册
  • 179. CompletableFuture - 掌握异步编程,理解链式调用和组合
  • 180. AtomicReference - 掌握引用类型原子操作
  • 181. LongAdder vs AtomicLong - 掌握高并发计数器选择
  • 182. AtomicStampedReference - 掌握ABA问题解决
  • 183. CompletableFuture组合 - 掌握thenApply/thenAccept/thenRun
  • 184. CompletableFuture异常处理 - 掌握exceptionally/handle
  • 185. CompletableFuture并行任务 - 掌握allOf/anyOf

1.4.4 线程池

  • 186. ThreadPoolExecutor核心参数 - 掌握corePoolSize、maximumPoolSize等7个参数
  • 187. 线程池工作流程 - 理解任务提交到执行的完整流程
  • 188. 阻塞队列(ArrayBlockingQueue等) - 掌握4种队列,理解拒绝策略
  • 189. Executors工厂方法 - 了解newFixedThreadPool等,理解潜在风险
  • 190. 自定义线程池 - 掌握合理配置,理解CPU密集和IO密集区别
  • 191. ForkJoinPool - 掌握工作窃取算法,理解分治任务
  • 192. ScheduledThreadPoolExecutor - 掌握定时任务,理解周期执行
  • 193. 线程池监控与调优 - 掌握指标监控,理解动态调整策略
  • 194. 拒绝策略 - 掌握AbortPolicy/CallerRunsPolicy/DiscardPolicy
  • 195. 线程池关闭 - 掌握shutdown和shutdownNow区别
  • 196. 线程池扩展 - 掌握beforeExecute/afterExecute钩子方法
  • 197. 线程池大小计算 - 掌握NcpuUcpu(1+W/C)公式
  • 198. 虚拟线程执行器 - 掌握Executors.newVirtualThreadPerTaskExecutor
  • 199. 线程池与ThreadLocal - 理解清理ThreadLocal防止内存泄漏
  • 200. 线程池最佳实践 - 掌握阿里巴巴开发手册规范

1.4.5 并发集合

  • 201. ConcurrentHashMap详解 - 掌握put/get/merge的并发安全
  • 202. CopyOnWriteArrayList - 掌握迭代安全的List
  • 203. ConcurrentLinkedQueue - 掌握无锁队列实现
  • 204. BlockingQueue实现 - 掌握生产者消费者模式
  • 205. ConcurrentSkipListMap - 掌握并发跳表实现
  • 206. ConcurrentSkipListSet - 掌握并发有序Set
  • 207. 并发集合性能对比 - 理解不同场景的选择

1.5 IO/NIO

1.5.1 字节流

  • 208. InputStream/OutputStream - 掌握字节流基类,理解读写操作
  • 209. FileInputStream/FileOutputStream - 掌握文件字节流,理解资源关闭
  • 210. BufferedInputStream/BufferedOutputStream - 掌握缓冲流,理解性能优化
  • 211. DataInputStream/DataOutputStream - 掌握基本类型读写,理解跨平台
  • 212. ObjectInputStream/ObjectOutputStream - 掌握对象序列化,理解serialVersionUID
  • 213. ByteArrayInputStream/ByteArrayOutputStream - 掌握内存流,理解临时数据
  • 214. 装饰器模式在IO中的应用 - 理解IO流的设计模式
  • 215. 序列化和反序列化 - 掌握Serializable接口,理解transient关键字
  • 216. 外部序列化 - 掌握Externalizable接口,理解自定义序列化
  • 217. 序列化安全 - 理解readObject安全风险
  • 218. 过滤器流 - 掌握FilterInputStream/FilterOutputStream
  • 219. PushbackInputStream - 掌握回退流,理解单字节回退
  • 220. SequenceInputStream - 掌握多流合并
  • 221. try-with-resources - 掌握自动资源管理,理解AutoCloseable

1.5.2 字符流

  • 222. Reader/Writer - 掌握字符流基类,理解字符编码
  • 223. FileReader/FileWriter - 掌握文件字符流,理解平台编码问题
  • 224. BufferedReader/BufferedWriter - 掌握缓冲字符流,理解readLine方法
  • 225. InputStreamReader/OutputStreamWriter - 掌握转换流,理解字节到字符转换
  • 226. PrintWriter - 掌握格式化输出,理解println和printf
  • 227. StringReader/StringWriter - 掌握字符串流,理解内存操作
  • 228. 字符编码(UTF-8、GBK等) - 理解编码原理,掌握乱码处理
  • 229. Charset类 - 掌握字符集操作,理解availableCharsets
  • 230. 文件编码检测 - 理解编码识别问题
  • 231. Unicode与UTF - 掌握编码原理,理解BOM头
  • 232. 字符流 vs 字节流 - 理解使用场景选择
  • 233. Scanner类 - 掌握文本扫描,理解正则分隔

1.5.3 NIO

  • 234. Buffer(ByteBuffer等) - 掌握缓冲区,理解position/limit/capacity
  • 235. Channel(FileChannel等) - 掌握通道,理解双向读写
  • 236. Selector - 掌握多路复用器,理解事件驱动
  • 237. SelectionKey - 掌握事件类型,理解OP_READ/OP_WRITE
  • 238. NIO vs BIO对比 - 理解同步阻塞与同步非阻塞的区别
  • 239. 零拷贝技术 - 理解FileChannel.transferTo,掌握性能优化
  • 240. NIO.2(Path、Files) - 掌握Java 7文件API,理解Visitor模式
  • 241. 异步文件通道(AsynchronousFileChannel) - 掌握异步IO,理解Future回调
  • 242. DirectBuffer vs HeapBuffer - 掌握堆外内存,理解GC影响
  • 243. Buffer翻转操作 - 掌握flip/clear/rewind/compact区别
  • 244. 内存映射文件 - 掌握MappedByteBuffer,理解大文件处理
  • 245. Scatter/Gather - 掌握分散读取和聚集写入
  • 246. 管道(Pipe) - 掌握线程间数据传输
  • 247. 网络通道(SocketChannel) - 掌握TCP非阻塞IO
  • 248. ServerSocketChannel - 掌握服务端非阻塞监听
  • 249. Reactor模式 - 理解NIO的设计模式
  • 250. AIO(NIO.2异步IO) - 掌握AsynchronousSocketChannel

1.5.4 文件操作

  • 251. File类操作 - 掌握文件创建、删除、重命名
  • 252. 目录遍历 - 掌握listFiles和Files.walk,理解递归遍历
  • 253. 文件复制与移动 - 掌握Files.copy和Files.move
  • 254. 文件属性读取 - 掌握BasicFileAttributes,理解元数据
  • 255. 临时文件创建 - 掌握createTempFile,理解清理策略
  • 256. 文件监视(WatchService) - 掌握文件变化监听,理解事件轮询
  • 257. 文件权限 - 掌握POSIX文件权限
  • 258. 符号链接 - 掌握软链接和硬链接
  • 259. 文件查找 - 掌握Files.find和Files.walk
  • 260. 文件读写 - 掌握Files.readAllBytes/write
  • 261. 文件行读取 - 掌握Files.lines和Files.readAllLines
  • 262. 路径操作 - 掌握Path.normalize/resolve/relativize
  • 263. 文件树遍历 - 掌握FileVisitor接口
  • 264. 文件空间操作 - 掌握FileStore和FileSystem

1.6 反射与泛型

1.6.1 反射机制

  • 265. Class对象获取 - 掌握三种获取方式,理解类加载
  • 266. 构造函数反射 - 掌握Constructor,理解newInstance
  • 267. 方法反射 - 掌握Method.invoke,理解参数传递
  • 268. 字段反射 - 掌握Field.get/set,理解访问私有字段
  • 269. 数组反射 - 掌握Array工具类,理解动态创建
  • 270. 反射性能优化 - 理解setAccessible,掌握缓存策略
  • 271. 反射应用场景 - 理解框架底层原理,掌握动态代理
  • 272. 注解反射 - 掌握Annotation的反射获取
  • 273. 泛型反射 - 掌握ParameterizedType和TypeVariable
  • 274. 动态代理 - 掌握Proxy.newProxyInstance
  • 275. 方法句柄(MethodHandle) - 掌握Java 7的方法调用API
  • 276. VarHandle - 掌握Java 9的变量句柄
  • 277. 反射与泛型 - 理解类型擦除后的反射限制
  • 278. 反射安全风险 - 理解模块系统的反射限制

1.6.2 泛型

  • 279. 泛型类与泛型方法 - 掌握类型参数声明,理解类型推导
  • 280. 泛型接口 - 掌握接口类型参数,理解实现类指定
  • 281. 类型通配符(? extends、? super) - 掌握PECS原则,理解协变逆变
  • 282. 类型擦除 - 理解泛型实现原理,掌握桥方法
  • 283. 泛型数组限制 - 理解为什么不能创建泛型数组
  • 284. 泛型约束(extends) - 掌握类型上界,理解多约束
  • 285. 泛型在集合中的应用 - 理解集合类型安全,掌握最佳实践
  • 286. 泛型方法推断 - 理解类型参数推断规则
  • 287. 泛型擦除问题 - 掌握运行时类型信息丢失
  • 288. 泛型与反射 - 掌握通过反射获取泛型信息
  • 289. 泛型递归约束 - 掌握<T extends Comparable<T>>
  • 290. 通配符捕获 - 理解编译器通配符捕获机制

1.7 Lambda与函数式编程

1.7.1 Lambda表达式

  • 291. Lambda语法 - 掌握参数->主体语法,理解类型推断
  • 292. 方法引用 - 掌握四种引用方式,理解简化语法
  • 293. 构造函数引用 - 掌握new引用,理解工厂模式简化
  • 294. 变量捕获 - 理解effectively final限制,掌握闭包
  • 295. Lambda vs 匿名内部类 - 理解区别,掌握适用场景
  • 296. Lambda性能 - 理解 invokedynamic 指令,掌握性能影响
  • 297. Lambda调试技巧 - 掌握调试Lambda表达式的方法
  • 298. Lambda异常处理 - 掌握在Lambda中处理受检异常
  • 299. Lambda序列化 - 理解Lambda的序列化支持
  • 300. 方法引用类型 - 掌握静态、实例、超类方法引用

1.7.2 Stream API

  • 301. Stream创建 - 掌握collection.stream()、Stream.of等
  • 302. 中间操作(filter、map、sorted等) - 掌握链式调用,理解惰性求值
  • 303. 终止操作(collect、reduce、forEach等) - 掌握结果收集,理解短路操作
  • 304. Collector接口 - 掌握自定义收集器,理解toList/joining
  • 305. 并行Stream - 掌握parallel(),理解ForkJoinPool
  • 306. Optional类 - 掌握空值处理,理解orElse/orElseGet区别
  • 307. Stream性能考量 - 理解开销,掌握适用场景
  • 308. Stream无限流 - 掌握generate/iterate
  • 309. 自定义Spliterator - 掌握分割迭代器
  • 310. Stream flatMap - 掌握嵌套流扁平化
  • 311. Stream groupingBy - 掌握分组收集器
  • 312. Stream partitioningBy - 掌握分区收集器
  • 313. Stream reducing - 掌握归约操作
  • 314. Stream peek - 掌握调试方法,理解副作用
  • 315. Stream concat - 掌握流合并
  • 316. Stream.Builder - 掌握流构建器
  • 317. IntStream/LongStream/DoubleStream - 掌握基本类型流
  • 318. Stream与性能 - 理解何时使用并行Stream

1.7.3 函数式接口

  • 319. Predicate - 掌握条件判断,理解and/or/negate
  • 320. Function - 掌握类型转换,理解compose/andThen
  • 321. Consumer - 掌握消费操作,理解链式调用
  • 322. Supplier - 掌握供给操作,理解延迟初始化
  • 323. BiFunction/BiConsumer - 掌握双参数接口
  • 324. UnaryOperator/BinaryOperator - 掌握同类型操作
  • 325. 自定义函数式接口 - 掌握@FunctionalInterface
  • 326. 函数组合 - 掌握Function链式调用
  • 327. 函数式接口与Lambda - 理解目标类型推断
  • 328. 函数式编程范式 - 掌握不可变性、纯函数

1.8 Java新特性

1.8.1 Java 8-11核心特性

  • 329. Java 8新特性概览 - 掌握Lambda、Stream、默认方法等
  • 330. Java 9模块化 - 理解module-info,掌握依赖声明
  • 331. Java 10局部变量类型推断 - 掌握var关键字
  • 332. Java 11 HTTP Client - 掌握新HTTP API
  • 333. Java 11字符串API增强 - 掌握isBlank、lines等方法
  • 334. Java 8日期时间API - 掌握LocalDate/LocalTime
  • 335. Java 8 Optional增强 - 掌握空值处理最佳实践
  • 336. Java 9 集合工厂方法 - 掌握List.of/Set.of/Map.of
  • 337. Java 9 改进try-with-resources - 掌握有效final变量
  • 338. Java 9 私有接口方法 - 掌握接口代码复用
  • 339. Java 10 应用类数据共享 - 理解AppCDS优化启动
  • 340. Java 11 单文件运行 - 掌握直接运行.java文件
  • 341. Java 11 Epsilon GC - 理解无操作GC
  • 342. Java 11 ZGC - 掌握低延迟垃圾回收器

1.8.2 Java 17-21特性

  • 343. Java 17密封类 - 掌握sealed类,理解继承控制
  • 344. Java 17记录类 - 掌握record,理解不可变数据载体
  • 345. Java 17模式匹配instanceof - 掌握类型转换简化
  • 346. Java 19虚拟线程预览 - 理解Project Loom
  • 347. Java 21虚拟线程正式 - 掌握虚拟线程使用
  • 348. Java 21模式匹配switch - 掌握switch增强
  • 349. Java 21序列集合 - 掌握List/SequencedCollection增强
  • 350. Java 21字符串模板 - 掌握String Templates预览
  • 351. Java 21未命名类和实例main - 理解初学者友好特性
  • 352. Java 17 Switch模式匹配 - 掌握类型模式
  • 353. Java 19 结构化并发 - 理解并发编程新范式
  • 354. Java 21 分代ZGC - 掌握分代垃圾回收
  • 355. Java 17 外部函数API - 掌握Panama项目
  • 356. Java 17 向量API - 理解SIMD优化
  • 357. 版本升级路径 - 掌握从Java 8到21的升级注意事项

进度统计

  • 领域:Java语言基础
  • 知识点总数:357项
  • 已完成:0项
  • 待完成:357项

实战项目建议

  1. 集合框架实践:实现LRU缓存(LinkedHashMap扩展)
  2. 多线程实践:实现线程池监控面板
  3. IO/NIO实践:实现文件搜索引擎
  4. Stream实践:实现数据分析管道

常见面试问题

  1. HashMap的底层实现原理?JDK 7和JDK 8有什么区别?
  2. ConcurrentHashMap如何保证线程安全?
  3. synchronized和ReentrantLock的区别?
  4. 线程池的核心参数有哪些?如何合理配置?
  5. volatile关键字的作用和原理?
  6. Java中的四种引用类型及其应用场景?

推荐学习资源

  • 书籍:《Java核心技术卷I》《Effective Java》《Java并发编程实战》
  • 视频:尚硅谷Java全套、黑马程序员Java基础
  • 文档Java官方文档
  • 练习:LeetCode、牛客网Java专项练习

返回总目录

知识点测试

读完文章了?来测试一下你对知识点的掌握程度吧!

评论区

使用 GitHub 账号登录后即可发表评论,支持 Markdown 格式。

如果评论系统无法加载,请确保:

  • 您的网络可以访问 GitHub
  • giscus GitHub App 已安装到仓库
  • 仓库已启用 Discussions 功能