java源码分析(8)-Boolean

来源:互联网 发布:网络七大神兽 编辑:程序博客网 时间:2024/06/07 04:06

Boolean

1.Boolean类

Boolean为final修饰,不能被继承,实现了java.io.Serializable接口和Comparable<Boolean>接口,可以序列化和进行比较,Boolean没有无参构造器。

public final class Boolean implements java.io.Serializable,                                      Comparable<Boolean>{    public static final Boolean TRUE = new Boolean(true);//因为Boolean就只有两个值,故直接在jvm启动时便生成这两个值并建立引用    public static final Boolean FALSE = new Boolean(false);    public static final Class<Boolean> TYPE = Class.getPrimitiveClass("boolean");//Boolean类型为本地原始类    private final boolean value;    public Boolean(boolean value) {this.value = value;    }    public Boolean(String s) {//Boolean有一个可以传入字符串的构造器,只当字符串为“true”时,value为true,其余都为falsethis(toBoolean(s));    }
    private static boolean toBoolean(String name) {         return ((name != null) && name.equalsIgnoreCase("true"));//只要name不为true,统一返回false    }

2.parseBoolean

 public static boolean parseBoolean(String s) {        return toBoolean(s);//再次使用了toBoolean方法,只有传入的字符串为true时,返回为true,其余都为false
    }

3.取值

Boolean取value值的函数不是getValue(),而是booleanValue()

    public boolean booleanValue() {return value;    }    public static Boolean valueOf(boolean b) {        return (b ? TRUE : FALSE);//用于取boolean参数的boolean值    }    public static Boolean valueOf(String s) {return toBoolean(s) ? TRUE : FALSE;//用于取字符串参数的boolean值,遵照toBoolean的规则    }

4.hashCode

public int hashCode() {return value ? 1231 : 1237;//Boolean的哈希值只有固定的两个值,true为1231,false为1237    }

5.equals

重写了equals方法,将参数强转后比较value地址值(总共就只有两个地址值,true和false的地址值)

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

6.getBoolean

用于获取系统参数的boolean值,使用前要设置系统属性

 }    public static boolean getBoolean(String name) {        boolean result = false;        try {            result = toBoolean(System.getProperty(name));//比较的是系统参数,而不是普通的方法中传入的参数,要使返回值为true,必须先设置系统参数名,并设置值为true        } catch (IllegalArgumentException e) {        } catch (NullPointerException e) {        }        return result;    }
7.compareTo
public int compareTo(Boolean b) {        return (b.value == value ? 0 : (value ? 1 : -1));//true比false大    }







0 0
原创粉丝点击