JDK源码阅读——java.lang.Boolean

    • Boolean
      • 概述
      • 类的UML类图
      • 源码解析

Boolean

1.概述

public final class Boolean implements Serializable, Comparable
布尔类将基础类型布尔值包装在一个对象中。一个布尔类型的对象包含一个类型为Boolean的单一字段。
此外,这个类提供了许多方法,可以将布尔值转换为一个字符串和一个字符串到一个布尔值,以及处理布尔值时使用的其他常量和方法。

2.类的UML类图

用Intellij IDEA的UML 插件生成的类图:
JDK源码阅读——java.lang.Boolean_第1张图片

3.源码解析

public final class Boolean implements java.io.Serializable,
                                      Comparable<Boolean>
{
    public static final Boolean TRUE = new Boolean(true);
    public static final Boolean FALSE = new Boolean(false);
    /**
     * 表示基本类型 boolean 的 Class 对象
     * @since   JDK1.1
     */
    @SuppressWarnings("unchecked")
    public static final Class TYPE = (Class) Class.getPrimitiveClass("boolean");

    private final boolean value;

    /** 
    * 是当对象序列化的时候对象的一个标识
    */
    private static final long serialVersionUID = -3665804199014368530L;

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

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

    /**
     * 将字符串参数解析为 boolean 值。如果 String 参数不是 
     * null 且在忽略大小写时等于 "true",则返回的 boolean 表示 true 值。
     * 示例:Boolean.parseBoolean("True") 返回 true。
     * 示例:Boolean.parseBoolean("yes") 返回 false。 
     */
    public static boolean parseBoolean(String s) {
    // equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写。
        return ((s != null) && s.equalsIgnoreCase("true"));
    }

    public boolean booleanValue() {
        return value;
    }

    public static Boolean valueOf(boolean b) {
    // 三元运算符 如果b是true返回第一个值TRUE,否则,返回第二个值
        return (b ? TRUE : FALSE);
    }


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


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


    public String toString() {
        return value ? "true" : "false";
    }


    @Override
    public int hashCode() {
        return Boolean.hashCode(value);
    }

    /**
     * 返回一个用于boolean值的哈希代码
     */
    public static int hashCode(boolean value) {
        return value ? 1231 : 1237;
    }

    public boolean equals(Object obj) {
    // 判断 obj 是不是 Boolean类型
        if (obj instanceof Boolean) {
       // booleanValue() 将此 Boolean 对象的值作为基本布尔值返回。
            return value == ((Boolean)obj).booleanValue();
        }
        return false;
    }

    /**
     * 当且仅当以参数命名的系统属性存在,且等于 "true" 字符串时,才返回 true。
     * 通过 getProperty 方法可访问系统属性,此方法由 System 类定义,System.setProperty()。
     * 如果没有以指定名称命名的属性或者指定名称为空或 null,则返回 false。
     */
    public static boolean getBoolean(String name) {
        boolean result = false;
        try {
        // System.getProperty(String key)获取由指定key指示的系统属性,以字符串形式返回
            result = parseBoolean(System.getProperty(name));
        } catch (IllegalArgumentException | NullPointerException e) {
        }
        return result;
    }

    /**
    * 将此 Boolean 实例与其他实例进行比较。 
    */
    public int compareTo(Boolean b) {
        return compare(this.value, b.value);
    }
    public static int compare(boolean x, boolean y) {
    // 如果 x == y 为真就返回0,否则返回(x ? 1 : -1)返回的值
        return (x == y) ? 0 : (x ? 1 : -1);
    }
    public static boolean logicalAnd(boolean a, boolean b) {
        return a && b;
    }
    public static boolean logicalOr(boolean a, boolean b) {
        return a || b;
    }
    public static boolean logicalXor(boolean a, boolean b) {
        return a ^ b;
    }
}

你可能感兴趣的:(java.lang,类)