integer和boolean是java中用于解决集合存储、空值表达、字符串转换等实际问题的包装类;integer适用于泛型集合、可空字段、optional封装及number父类调用,boolean则用于三态语义(null/false/true)场景。

Integer 和 Boolean 是 Java 中最常用的基础包装类,分别对应基本类型 int 和 boolean。它们不只是“能当对象用”,更关键的是解决集合存储、空值表达、字符串转换等实际问题。用对了省 Bug,用错了容易掉进 NPE 或 == 判断陷阱。
什么时候必须用 Integer 而不是 int
以下场景不能用基本类型,只能用包装类:
- 放进
ArrayList<integer></integer>、HashMap<string integer></string>等泛型集合 —— 基本类型不被允许 - 方法参数或返回值需要表示“可能不存在”,比如数据库查询结果为 null 的整数字段:
Integer age = userDao.findAgeById(1001); - 使用
Optional<integer></integer>封装可选值,避免用 -1 或 0 作特殊标记 - 调用需要
Number父类的方法(如数值统计工具类),因为Integer是Number子类,int不是
Boolean 的核心用途不是“替代 boolean”,而是表达三态语义
boolean 只有 true/false,而 Boolean 多一个 null 状态,这在业务逻辑中非常实用:
- API 接收的布尔参数未传时,后端可接收
Boolean flag,区分“没传”(null)、“明确关”(false)、“明确开”(true) - 数据库字段定义为
TINYINT(1)或BOOLEAN NULL,JDBC 映射自然得到Boolean,而非强制设默认值 - 配置中心里某个开关未配置,读取为
null,代码可统一处理:“未配置时走默认策略”,而不是误判为 false
注意:new Boolean("yes") 这种构造器已过时,应改用 Boolean.valueOf("true") 或直接用自动装箱。
安全转换字符串的推荐写法
从字符串转数值或布尔值,优先用静态工厂方法,它们更安全、更高效:
-
Integer:用
Integer.valueOf("123")(返回缓存对象,适合小整数)或Integer.parseInt("123")(返回基本类型,需 try-catch 捕获NumberFormatException) -
Boolean:用
Boolean.parseBoolean("true")(不区分大小写,非 "true" 字符串一律返回 false)或Boolean.valueOf("True")(同 parseBoolean,但返回Boolean对象) - 避免
new Integer("123")或new Boolean("true")—— 构造器已废弃,且不复用缓存、易引发内存浪费
小心 == 和 null 的坑
这是新手高频出错点:
Integer a = 100, b = 100; System.out.println(a == b); // true(-128~127 缓存内)Integer c = 200, d = 200; System.out.println(c == d); // false(超出缓存,新建对象)Boolean x = true, y = true; System.out.println(x == y); // true(Boolean 缓存 true/false 两个实例)- 任何包装类变量都可能为
null,直接调用.intValue()或.booleanValue()会抛NullPointerException;建议先判空,或用Objects.equals(a, b)比较
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











