美文网首页
6 java.lang.Boolean

6 java.lang.Boolean

作者: 十丈_红尘 | 来源:发表于2018-09-21 20:48 被阅读0次

    1️⃣类定义

    public final class Boolean implements java.io.Serializable, Comparable<Boolean>
    
    1. 类声明的时候使用了final表示类不能被继承;
    2. 实现了Serializable接口支持序列化;
    3. 实现了Comparable接口表示需要重新比较器;

    2️⃣变量

    成员变量:表明boolean一旦被创建将不可更改,这一点和String是一样的;

    private final boolean value;
    

    静态变量:两个静态变量是为了减少内存消耗,使用时可以直接使用;

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

    3️⃣构造方法

        /**
         * 根据传入的boolean值来创建对象,只能传入true或者false;
         */
        public Boolean(boolean value) {
            this.value = value;
        }
    
        /**
         * 默认调用parseBoolean()这个构造器进行对象创建,默认值为false
         * 与第一个构造器不同的是,这个构造器忽略了大小写且可以接受任
         * 意字符串,只有传入的字符串为true的时候才为true,非true均为false
         */
        public Boolean(String s) {
            this(parseBoolean(s));
        }
    
        /**
         * 这个构造器忽略了大小写且可以接受任
         * 意字符串,只有传入的字符串为true的时候才为true,非true均为false
         */
        public static boolean parseBoolean(String s) {
            return ((s != null) && s.equalsIgnoreCase("true"));
        }
    

    4️⃣方法

    返回对象的boolean值

        public boolean booleanValue() {
            return value;
        }
    

    这两个方法可以根据传入的布尔类型值获取指定的静态变量,从而减少内存和时间消耗

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

    根据不同的值返回不同的int

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

    重写的equals

        public boolean equals(Object obj) {
            // 判断是否是Boolean类型
            if (obj instanceof Boolean) {
                // 如果是Boolean类型则调用booleanValue()拿到返回值并进行强转;
                return value == ((Boolean)obj).booleanValue();
            }
            // 如果不是则直接返回false
            return false;
        }
    

    compareTo(Boolean b)这个方法比较简单,核心的逻辑就是一个嵌套的三元

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

    相关文章

      网友评论

          本文标题:6 java.lang.Boolean

          本文链接:https://www.haomeiwen.com/subject/hqvznftx.html