boolean包装类仅有true和false两个常量,因boolean基本类型仅含true、false两值;jdk预实例化这两个不可变对象以避免重复创建,valueof()和自动装箱均复用它们,故==比较true或false时返回true,但new boolean()总新建对象导致==为false。

Boolean 包装类只有两个常量实例:TRUE 和 FALSE。
为什么只有这两个?
因为 boolean 基本类型本身只定义了 true 和 false 两个取值,Boolean 类作为其包装类,为避免无谓的对象创建,JDK 直接在类内部用 public static final 修饰了两个预实例化的对象:
public static final Boolean TRUE = new Boolean(true);public static final Boolean FALSE = new Boolean(false);
所有通过 Boolean.valueOf(boolean) 或自动装箱(如 Boolean b = true;)生成的 Boolean 实例,最终都指向这两个常量之一,不会新建对象。
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
注意 == 比较的行为
由于 TRUE 和 FALSE 是单例,所以:
-
Boolean.TRUE == Boolean.valueOf(true)→ true -
Boolean.FALSE == Boolean.valueOf(false)→ true - 但
new Boolean(true) == Boolean.TRUE→ false(因为 new 总是新建堆对象)
和 Integer 等缓存机制的区别
Integer 缓存 -128 到 127 的整数,而 Boolean 不叫“缓存”,它根本就只有两个可能值,因此直接固化为两个不可变常量。这也意味着 Boolean 没有范围概念,只有 true/false 两种状态。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










