欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Java】JDK源码分析——Boolean

程序员文章站 2022-07-14 17:29:45
...

一.概述

Boolean是boolean的包装类。
Boolean.java中的相关代码:

public final class Boolean implements java.io.Serializable,
                                      Comparable<Boolean>
{}

1.Boolean被final修饰,不可以被继承。
2.实现了java.io.Serializable接口,可以进行序列化。
3.实现了Comparable<Boolean>接口,可以进行Boolean之间的比较。

二.源码分析

1.全局变量

Boolean.java中的相关代码:

	// boolean中true对应的Boolean对象
	public static final Boolean TRUE = new Boolean(true);
	// boolean中false对应的Boolean对象
	public static final Boolean FALSE = new Boolean(false);

	// 抑制没有类型检查而出现的警告
	@SuppressWarnings("unchecked")
	// Boolean类中对应的原始的boolean
	// Boolean.class和boolean.class不相等,但Boolean.TYPE和boolean.class相等
	public static final Class<Boolean> TYPE = (Class<Boolean>) Class.getPrimitiveClass("boolean");

	// 用于保存Boolean对象的值
	private final boolean value;
	// 用于序列化
	private static final long serialVersionUID = -3665804199014368530L;

2.构造方法

1)参数为boolean

Boolean.java中的相关代码:

	public Boolean(boolean value) {
    	// 保存到全局变量
        this.value = value;
	}

2)参数为String

Boolean.java中的相关代码:

	public Boolean(String s) {
    	// 调用parseBoolean方法,将String类型的对象转换为boolean类型
    	// 调用参数为boolean的构造方法
        this(parseBoolean(s));
	}

3. parseBoolean方法

用于将String类型的对象转换为boolean类型。
Boolean.java中的相关代码:

	public static boolean parseBoolean(String s) {
    	// 若s不为空且s的值为”true”时,返回true
    	// 否则,返回false
        return ((s != null) && s.equalsIgnoreCase("true"));
	}

4. booleanValue方法

获取Boolean对象的boolean值。
Boolean.java中的相关代码:

	public boolean booleanValue() {
    	// 返回值
        return value;
	}

5.valueOf方法

将对象转换为Boolean类型。

1)参数为boolean

Boolean.java中的相关代码:

	public static Boolean valueOf(boolean b) {
    	// 若b为真,返回true对应的Boolean对象TRUE
		// 否则返回false对应的Boolean对象FALSE
        return (b ? TRUE : FALSE);
	}

2)参数为String

Boolean.java中的相关代码:

	public static Boolean valueOf(String s) {
    	// 调用parseBoolean方法,将String对象转化为boolean对象
    	// 为真返回TRUE对象,否则返回FALSE对象
        return parseBoolean(s) ? TRUE : FALSE;
	}

6. toString方法

将boolean对象转换为String类型。

1)无参数

Boolean.java中的相关代码:

	public String toString() {
    	// 为真返回”true”,否则返回”false”
        return value ? "true" : "false";
	}

2)参数为boolean

Boolean.java中的相关代码:

	public static String toString(boolean b) {
    	// 为真返回”true”,否则返回”false”
        return b ? "true" : "false";
	}

7. hashCode方法

获取哈希值。
Boolean.java中的相关代码:

    @Override
	public int hashCode() {
    	// 调用了Boolean的静态方法hashCode
        return Boolean.hashCode(value);
	}

1)hashCode方法

Boolean.java中的相关代码:

	public static int hashCode(boolean value) {
    	// 若为真,返回1231,否则,返回1237
        return value ? 1231 : 1237;
	}

8. equals方法

判断两个对象是否相等
Boolean.java中的相关代码:

	public boolean equals(Object obj) {
    	// 若对象的类型为Boolean
        if (obj instanceof Boolean) {
            // 若相等,则返回true,否则返回false
            return value == ((Boolean)obj).booleanValue();
        }
        // 其它类型,返回false
        return false;
	}

9. getBoolean方法

将String类型的系统变量转换为boolean类型。
Boolean.java中的相关代码:

    public static boolean getBoolean(String name) {
        // 默认结果为false
		boolean result = false;
        try {
            // 调用System的getProperty方法,获取String类型的系统变量
            // 调用parseBoolean方法,转换为boolean类型
            result = parseBoolean(System.getProperty(name));
        } catch (IllegalArgumentException | NullPointerException e) {
        }
        // 返回结果
        return result;
	}

10. compareTo方法

用于两个Boolean对象的比较。相等时返回0。不相等时,若value为true返回1,为false返回-1。
Boolean.java中的相关代码:

	public int compareTo(Boolean b) {
    	// 调用了重载的方法。
        return compare(this.value, b.value);
	}

调用了重载的compareTo方法。
Boolean.java中的相关代码:

	public static int compare(boolean x, boolean y) {
    	// x和y相等返回0
    	// 若x和y不相等,x为真,返回1,x为假,返回-1
        return (x == y) ? 0 : (x ? 1 : -1);
	}

11. logicalAnd方法

对两个boolean对象进行与运算。
Boolean.java中的相关代码:

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

12. logicalOr方法

对两个boolean对象进行或运算。
Boolean.java中的相关代码:

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

13. logicalXor方法

对两个boolean对象进行异或运算。
Boolean.java中的相关代码:

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