Boolean源码详解

Boolean 类将原始类型boolean的值包装在一个对象中。包括在处理boolean时有用的其他常量和方法。

一、结构图

在这里插入图片描述

二、结构

在这里插入图片描述

二、方法介绍

1、静态变量

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

/**
 * The {@code Boolean} object corresponding to the primitive
 * value {@code false}.
 */
public static final Boolean FALSE = new Boolean(false);

/**
 * The Class object representing the primitive type boolean.
 *
 * @since   JDK1.1
 */
public static final Class<Boolean> TYPE = (Class<Boolean>) Class.getPrimitiveClass("boolean");

// 为指定原始对象返回虚拟机类对象
static native Class<?> getPrimitiveClass(String name);

2、属性

private final boolean value;

存储着Boolean对象中的基本数据类型boolean值

3、方法及构造方法介绍

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

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

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

第二个构造方法如果字符串s不是"true"就返回false。

public boolean booleanValue() {
    return value;
}

返回Boolean存储的boolean值。

public static Boolean valueOf(boolean b) {
    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";
}

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

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

这里你是不是出现了一些的疑问?为什么hashCode返回的是1231和1237呢?这和之前的String计算hashCode选择31是一个道理,素数可以使hashCode更好地散列,另外1+2+3+1=7;1+2+3+7=13;7代表好运,13代表厄运。

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

是否相等根据包装类的value值来确定。

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

System.getProperty(name)方法是获取系统属性名称为name的值。

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);
}

由于实现了Comparable接口所以这是Boolean类的实现(true > false)。

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;
}

逻辑运算,感觉没什么用。
这个类异常轻松。
好啦,完结撒花★,°:.☆( ̄▽ ̄)/$:.°★

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值