类定义

public final class Boolean implements java.io.Serializable,
                                      Comparable<Boolean>
{
  private final boolean value;
}

Boolean对象是不可变的

当满足以下条件时,对象才是可变的:

  • 对象创建以后其状态就不能修改
  • 对象的所有域都是final类型
  • 对象是正确创建的(在对象的创建期间,this引用没有逸出)

两个静态变量

  • 不用每次都new一个Boolean
  • 节省内存
  • 避免创建实例的开销
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);

// Good
Boolean b = Boolean.TRUE;

// Bad
Boolean b = new Boolean(true);

两个构造方法

public Boolean(boolean value) {
  this.value = value;
}

public Boolean(String s) {
  this(parseBoolean(s));
}

// 静态工厂方法
public static Boolean valueOf(boolean b) {
  return (b ? TRUE : FALSE);
}

public static Boolean valueOf(String s) {
  return parseBoolean(s) ? TRUE : FALSE);
}

hashCode

public static int hashCode(boolean value) {
  return value ? 1231 : 1237;
}

equals

public boolean equals(Object obj) {
  if (obj instanceof Boolean) {
    return value == ((Boolean) obj).booleanValue();
  }
  return false;
}

References