源码系列——JDK源码——包装类(Boolean)

127 阅读1分钟

JDK 源码

一、Boolean

public final class Boolean implements java.io.Serializable,
                                      Comparable<Boolean>

因为带有final关键字,也就是不可继承,另外实现了SerializableComparable接口,也就是可以进行序列化和比较的。

1.1 公共参数:

true 和 false的参数:

public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);

构造函数:

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

1.2 parseBoolean()

将字符串转化为boolean

public static boolean parseBoolean(String s) {
    return ((s != null) && s.equalsIgnoreCase("true"));
}

1.3 valueOf()

public static Boolean valueOf(boolean b) {
    return (b ? TRUE : FALSE);
}

1.4 toString()

public static String toString(boolean b) {
    return b ? "true" : "false";
}

1.5 hashCode()

主要这两个是较大的质数(实际上其他较大的质数也可以),至于较大质数的原因是可以有效减少Hash碰撞冲突的发生。

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

1.6 equals()

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

1.7 getBoolean()

而是当且仅当系统属性中存在着对应名称的属性,且它的值为“true”(忽略大小写)时,返回true类型,否则返回false。

public static boolean getBoolean(String name) {
    boolean result = false;
    try {
        result = parseBoolean(System.getProperty(name));
    } catch (IllegalArgumentException | NullPointerException e) {
    }
    return result;
}

1.8 compareTo()

比较,如果x和y相同,则返回0,x为true返回1,否则返回-1

public static int compare(boolean x, boolean y) {
    return (x == y) ? 0 : (x ? 1 : -1);
}

1.9 logicalAnd()

public static boolean logicalAnd(boolean a, boolean b) {
    return a && b;
}

1.9 logicalOr()

或运算

public static boolean logicalOr(boolean a, boolean b) {
    return a || b;
}

1.10 logicalXor()

异或运算

public static boolean logicalXor(boolean a, boolean b) {
    return a ^ b;
}