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; } }
相关文章推荐
- JDK源码阅读第一天——java.lang.Appendable
- JDK源码分析:java.lang.Boolean
- JDK源码阅读——java.lang.Runable
- JDK源码阅读——java.lang.Character
- JDK源码分析Java.lang.Boolean的浅析——单例模式的应用(使我们更省内存)
- jdk源码阅读之 java.lang.Iterable
- JDK源码阅读——java.lang.Cloneable
- JDK源码阅读——java.lang.Readable
- JDK源码分析:java.lang.Boolean
- JDK源码分析:java.lang.Boolean
- JDK源码分析之 java.lang.Boolean
- JDK源码分析Java.lang.Boolean的浅析——单例模式的应用(使我们更省内存)
- JDK源码分析:java.lang.Boolean
- JDK源码阅读——java.lang.Thread.UncaughtExceptionHandler
- JDK源码阅读——java.lang.Comparable
- JDK源码分析:java.lang.Boolean
- JDK源码阅读第二天——java.lang.CharSequence
- JDK源码阅读——java.lang.Iterable
- JDK源码分析-java.lang.Boolean
- JDK源码阅读系列(1) java.lang.Object