6 java.lang.Boolean

2018-09-21  本文已影响0人  十丈_红尘

1️⃣类定义

public final class Boolean implements java.io.Serializable, Comparable<Boolean>
  1. 类声明的时候使用了final表示类不能被继承;
  2. 实现了Serializable接口支持序列化;
  3. 实现了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);
    }
上一篇 下一篇

猜你喜欢

热点阅读