选对基本类型需按业务量级定宽度、默认用double但禁用于精确比较、字符布尔须守语义底线、局部变量必须显式赋值。整数依范围选byte/short/long;浮点用BigDecimal处理金融计算;char不用数值编码,boolean禁参与运算;字面量须加L/F前缀。

选对基本类型不是背范围表,而是让数据在边界内自然生长。精度和范围不是理论参数,是运行时是否出错、结果是否可信的分水岭。
整数类型:按业务量级定宽度,不靠直觉
int 虽常用,但它的上限 2147483647 在高并发场景下极易突破——比如每秒 10 万订单,2 小时就超限。这类 ID 或计数器应直接声明为 long,字面量加 L 后缀:long orderId = 1234567890123456789L;
年龄、HTTP 状态码、枚举值等固定小范围(0–127)用 byte,省空间且语义清晰;
年份(如 2024)、端口号(0–65535)用 short 已足够,但需注意:它在算术运算中会自动提升为 int,若强行压缩反而增加隐式转换风险。
浮点类型:默认 double,但永远不用于精确比较
double 是 Java 默认浮点类型,精度约 15 位,适合大多数计算;
float 仅在内存或带宽敏感场景使用(如百万级传感器原始数据缓存),必须显式写 3.14F,否则编译报错;
所有涉及相等判断的场景(如阈值触发、配置校验)都要警惕 0.1 + 0.2 == 0.3 返回 false ——这不是 bug,是 IEEE 754 的必然表现;
金融、计费、库存扣减等必须用 BigDecimal,且构造必须用字符串:new BigDecimal("19.99"),绝不能用 new BigDecimal(19.99)(后者传入时已失真)。
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
字符与布尔:守住语义底线,不求数值化
char 是 Unicode 字符,不是“小整数”。写 'A' 没问题,但避免用 (char)65 表达字母,除非注释清楚这是编码转换用途;
boolean 只能是 true 或 false,不可参与算术运算,也不接受 flag == 1 或 if (flag == true) 这类写法——既冗余又易引发类型混淆;
状态字段(如 isDeleted、isActive)用 boolean,比用 int(0/1)或 String("true"/"false")更安全、更高效、意图更明确。
立即学习“Java免费学习笔记(深入)”;
声明与初始化:局部变量必须显式赋值
成员变量有 JVM 默认值(int 为 0,boolean 为 false),但局部变量不会自动初始化,未赋值就使用会编译失败;
字面量写法要匹配类型:long 加 L,float 加 F,十六进制或二进制字面量可加 0x 或 0b 前缀,避免隐式转换错误;
数组密集场景(如图像像素、协议缓冲区)优先用 byte[] 或 short[],能显著降低堆内存占用——100 万个 int 占 4MB,换成 byte[] 最多 1MB。

















