JDK1.8源码解读之Boolean

365 阅读2分钟

概述

Boolean对象包裹了一个基本类型的对象boolean。一个Boolean对象包含了一个boolean类型的成员变量

继承关系

public final class Boolean implements java.io.Serializable, Comparable 实现了java.io.Serializable, Comparable 接口

成员属性

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

用基本类型boolean创建了一个Boolean对象。在需要值为true的Boolean对象的时候,直接将该对象返回,无需再次新建,或者多次新建对象。节省系统开销。

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

用基本类型boolean创建了一个Boolean对象。在需要值为false的Boolean对象的时候,直接将该对象返回,无需再次新建,或者多次新建对象。节省系统开销。

public static final Class TYPE = (Class) Class.getPrimitiveClass("boolean");

返回 “boolean”,即返回Boolean对象的基本类型。

private final boolean value;

存储了该Boolean对象的值。

构造器

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

关键方法

+ parseBoolean()

字符串转化为boolean,只有字符串是“true"才发挥true。其他任何字符串都返回false

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

返回当前Boolean对象的值

public boolean booleanValue() {
    return value;
}
+ valueOf()

boolean转化为Boolean

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

String转化为Boolean。

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

当且仅当目标Object对象是一个Boolean类型。并且值也和当前Boolean相等的时候,返回true。

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

返回系统变量的值,转化为Boolean

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

比较两个Boolean对象的值。具体比较逻辑,见下一个方法。

public int compareTo(Boolean b) {
    return compare(this.value, b.value);
}
+ compare()

比较两个boolean的值。 x == y 返回0 x == true y == false 返回1 x == false y == true 返回-1

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

逻辑与

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

逻辑或

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

逻辑抑或

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

希望和大家多多交流


我16年毕业以后,做的是前端,目前打算深入学习java开发。内容有任何问题,欢迎各位小伙伴们指正,也希望小伙伴们给我点赞和关注,给我留言,一起交流讨论,共同进步。