1️⃣类定义
public final class Boolean implements java.io.Serializable, Comparable<Boolean>
- 类声明的时候使用了final表示类不能被继承;
- 实现了Serializable接口支持序列化;
- 实现了Comparable接口表示需要重新比较器;
2️⃣变量
成员变量:表明boolean一旦被创建将不可更改,这一点和String是一样的;
private final boolean value;
静态变量:两个静态变量是为了减少内存消耗,使用时可以直接使用;
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
3️⃣构造方法
/**
* 根据传入的boolean值来创建对象,只能传入true或者false;
*/
public Boolean(boolean value) {
this.value = value;
}
/**
* 默认调用parseBoolean()这个构造器进行对象创建,默认值为false
* 与第一个构造器不同的是,这个构造器忽略了大小写且可以接受任
* 意字符串,只有传入的字符串为true的时候才为true,非true均为false
*/
public Boolean(String s) {
this(parseBoolean(s));
}
/**
* 这个构造器忽略了大小写且可以接受任
* 意字符串,只有传入的字符串为true的时候才为true,非true均为false
*/
public static boolean parseBoolean(String s) {
return ((s != null) && s.equalsIgnoreCase("true"));
}
4️⃣方法
返回对象的boolean值
public boolean booleanValue() {
return value;
}
这两个方法可以根据传入的布尔类型值获取指定的静态变量,从而减少内存和时间消耗
public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}
public static Boolean valueOf(String s) {
return parseBoolean(s) ? TRUE : FALSE;
}
根据不同的值返回不同的int
@Override
public int hashCode() {
return Boolean.hashCode(value);
}
public static int hashCode(boolean value) {
return value ? 1231 : 1237;
}
重写的equals
public boolean equals(Object obj) {
// 判断是否是Boolean类型
if (obj instanceof Boolean) {
// 如果是Boolean类型则调用booleanValue()拿到返回值并进行强转;
return value == ((Boolean)obj).booleanValue();
}
// 如果不是则直接返回false
return false;
}
compareTo(Boolean b)这个方法比较简单,核心的逻辑就是一个嵌套的三元
public int compareTo(Boolean b) {
return compare(this.value, b.value);
}
public static int compare(boolean x, boolean y) {
return (x == y) ? 0 : (x ? 1 : -1);
}
网友评论