第1章 语法与类型的隐形陷阱


文档摘要

第1章 · 语法与类型的隐形陷阱 章节摘要:最基础的语法恰恰是返工率最高的地方。本章从三个真实翻车现场出发—— 缓存让 时灵时不灵、浮点数算钱差出一分钱、 落到未覆盖的分支——把 Java 类型系统、自动装拆箱、数值精度和控制流的边界规则一次讲透。读完你会对"简单代码"保持敬畏。 学习目标 说清 缓存池的区间以及 与 在包装类型上的行为差异 解释 IEEE 754 浮点误差的来源,掌握金额场景的 正确用法 列出 语句的穿透、null 键、新增枚举值三类高发坑 在代码评审中识别自动装箱引发的性能与语义问题 核心概念速览 类型系统的规则写在规范里只有几页纸,但它触发的事故能写满一整章。 子章节导航 1.

第1章 · 语法与类型的隐形陷阱

章节摘要:最基础的语法恰恰是返工率最高的地方。本章从三个真实翻车现场出发——Integer 缓存让 == 时灵时不灵、浮点数算钱差出一分钱、switch 落到未覆盖的分支——把 Java 类型系统、自动装拆箱、数值精度和控制流的边界规则一次讲透。读完你会对"简单代码"保持敬畏。

学习目标

  1. 说清 Integer 缓存池的区间以及 ==equals 在包装类型上的行为差异
  2. 解释 IEEE 754 浮点误差的来源,掌握金额场景的 BigDecimal 正确用法
  3. 列出 switch 语句的穿透、null 键、新增枚举值三类高发坑
  4. 在代码评审中识别自动装箱引发的性能与语义问题

核心概念速览

类型系统的规则写在规范里只有几页纸,但它触发的事故能写满一整章。

子章节导航

1.1 Integer 缓存与自动装箱拆箱事故

一个只在部分数据上复现的排序 Bug,牵出 IntegerCache== 语义与自动装拆箱的全部细节。

1.2 浮点数算钱翻车与 BigDecimal

对账系统每天差几分钱,根因是 double 的二进制表示根本存不下 0.1。这一节讲精度事故的机理与 BigDecimal 的正确姿势。

1.3 switch 与控制流边界坑

新增一个枚举值后线上 NPE——switch 的穿透、null 判断缺失和分支覆盖问题是这一节的主角。

子章节之间的逻辑关系

三节共用一条主线:编译器替你做的隐式转换,是语义漂移的温床

隐式转换发生处 表现形式 事故形态 ---------------- ---------------- ------------------ int 转 Integer 自动装箱 + 缓存池 == 比较时灵时不灵 十进制转二进制 double 精度误差 金额对不平 枚举新增值 switch 无默认分支 线上 NPE

先看装箱拆箱(语义层),再看浮点(表示层),最后看控制流(结构层),难度递进,坑的隐蔽度也递进。

前置知识与后续延伸

  • 前置:会写基本 Java 程序,了解栈与堆的区分即可。
  • 为后续铺垫:第 2 章 equals/hashCode 契约、第 4 章字符串常量池、第 5 章包装类型在高并发计数器上的用法,都以本章的装拆箱机理为基础。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U