在 Java 里,float / Float 处理“空值”要分清楚两种场景:
float(基本类型)——不可能为 nullfloat f; // 未赋值,编译错误
float f = 0.0f; // 一定有值
✅ 基本类型 float 不能为 null
✅ 没有“空值”概念,只有默认值 0.0f
Float(包装类型)——可以为 nullFloat f = null; // 合法
Float f = getValue();
if (f == null) {
// 处理空值
}
或使用 Optional(推荐)
Optional<Float> opt = Optional.ofNullable(f);
Float result = opt.orElse(0.0f);
数据库字段允许 NULL 时:
Float 而不是 floatFloat price = rs.getFloat("price");
if (rs.wasNull()) {
price = null;
}
MyBatis:
private Float price; // 不要写 float
public class DTO {
private Float score; // 可为 null
}
如果前端不传:
{}
→ score = null
❌ 错误写法:
Float a = null;
float b = a + 1; // 抛 NPE
✅ 正确写法:
Float a = null;
float b = (a == null ? 0.0f : a) + 1;
或:
float b = Optional.ofNullable(a).orElse(0.0f) + 1;
float f = 0.0f / 0.0f; // NaN
float g = 1.0f / 0.0f; // Infinity
判 NaN:
Float.isNaN(f);
⚠️ NaN / Infinity 不是 null
| 场景 | 建议 |
|---|---|
| 需要“空值” | 用 Float |
| 性能敏感 | 用 float |
| 数据库字段 | Float |
| JSON 传输 | Float |
| 计算前 | 必须判空 |
如果你有具体业务场景(比如表单、数据库、JSON、Spring),我可以给你更合适的写法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。