您的位置:首页 > 编程语言 > Java开发

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

2018-01-27 22:45 429 查看


Boolean
概述

类的UML类图

源码解析

Boolean

1.概述

public final class Boolean implements Serializable, Comparable<Boolean>


布尔类将基础类型布尔值包装在一个对象中。一个布尔类型的对象包含一个类型为Boolean的单一字段。

此外,这个类提供了许多方法,可以将布尔值转换为一个字符串和一个字符串到一个布尔值,以及处理布尔值时使用的其他常量和方法。

2.类的UML类图

用Intellij IDEA的UML 插件生成的类图:



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<Boolean> TYPE = (Class<Boolean>) 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) {
<
4000
span class="hljs-keyword">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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: