Java源码分析二:(Boolean)
Java源码分析第二弹(Boolean)
此方法继承的接口
java.io.Serializable、Comparable<Boolean>
一个是序列化,一个是可以进行比较
此方法声明的一些固定属性
以下两个属性是内部创建的两个对象可以理解为多例模式创建对象,创建两个对象的目的为了节约内存空间因为Boolean 就俩值要么true 要么false 你每次都新建对象的话浪费内存空间
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
此对象就是造一个反射出来的对象,这个给他规定死了就是boolean 意思就是反射出来的就是boolean对象
public static final Class<Boolean> TYPE = (Class<Boolean>) Class.getPrimitiveClass("boolean");
需要着重注意下你造一个对象Boolean b=true b.getClass()不等于TYPE 下面我们可以带大家打印一下
System.out.println(Boolean.class); -- 输出class java.lang.Boolean
System.out.println(boolean.class); -- 输出boolean
System.out.println(Boolean.TYPE); -- 输出boolean
由此可看这俩所产出的Class类不是一个着重注意一下哦
这个属性就有点简单了 包装类明知故问对基本数据的包装肯定要存储基本数据呀 这个就是存储的数据
private final boolean value;
这个不多BB 序列号
private static final long serialVersionUID = -3665804199014368530L;.
下面为大家介绍一下此类的构造器
此构造方法是传入一个boolean值 通过构造器都是在堆中新开辟一段空间存进去
public Boolean(boolean value) {
this.value = value;
}
这个是传入一个stirng 然后调用下面的parseBoolean(String s) 方法 下面讲方法的时候我着重说下
public Boolean(String s) {
this(parseBoolean(s));
}
下面为大家介绍一下方法
public static boolean parseBoolean(String s) {
return ((s != null) && s.equalsIgnoreCase("true"));
}
如果字符串不为空且输入的字符串无视大小写的true才为真 否则为假
public boolean booleanValue() {
return value;
}
此方法返回value值
public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}
此方法判断你输入的boolean 返回对应的多例 我们平时Boolean b=true 的时候就是调用的此方法 意思是 你用等号新建对象的时候都是复用对象 不是新开辟空间创建新对象
public static Boolean valueOf(String s) {
return parseBoolean(s) ? TRUE : FALSE;
}
此方法跟上面一样 举个例子 Boolean b="true" 先通过parseBoolean判断一下真假 如果真就返回真的多例对象
public static String toString(boolean b) {
return b ? "true" : "false";
}
这个方法是重写的toString 可以用类调用不用新建对象 不多说很简单
public String toString() {
return value ? "true" : "false";
}
同上 toString方法属性调用
public int hashCode() {
return Boolean.hashCode(value);
}
重写的hashCode方法 这里hashCode是定值哦 true=1231 false=1237 JDK版本不一样的话改不改不知道 我是8.0
public static int hashCode(boolean value) {
return value ? 1231 : 1237;
}
你可以通过类来调用他的hashCode 如 Boolean.hashCode(true) 那么他就返回1231
public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
return false;
}
重写的equals方法很简单比value值就行
public static boolean getBoolean(String name) {
boolean result = false;
try {
result = parseBoolean(System.getProperty(name));
} catch (IllegalArgumentException | NullPointerException e) {
}
return result;
}
可以通过输入的字符串获取一个boolean 值
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);
}
此方法判断先判断是否一样 如果一样就0 不一样就继续判断 如果x是true 就返回1 否则就-1 意思是 排序按照 先false 后true的顺序
public static boolean logicalAnd(boolean a, boolean b) {
return a && b;
}
此方法不多说判断两个是否都是true
public static boolean logicalOr(boolean a, boolean b) {
return a || b;
}
跟上面一样判断是否有一个是true
public static boolean logicalXor(boolean a, boolean b) {
return a ^ b;
}
判断一下异或 这里讲解一下异或 如果都是true或者false那么返回false 如果一个true 一个false 那么就返回true
浙公网安备 33010602011771号