Boolean类源码剖析
一、Boolean类的简介
Boolean类是基元类型boolean的包装类,其实例中包含一个boolean类型的字段。此外,此类还提供了许多将boolean转换为String和将String转换为booleana的方法,以及在处理boolean时有用的其他常量和方法。

二、Boolean类的字段
==重点:TRUE与FALSE字段实际上是包装类Boolean缓存思想的体现。==
1 | // 与基元值true对应的Boolean类型 |
因为Boolean实现了Serializable接口,所以支持序列化和反序列化支持。Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常(InvalidCastException)。
Class.getPrimitiveClass是包私有的方法,因为Class与Boolean都属于java.lang包,因此该方法在Boolean中可以被访问。
注意Boolean.TYPE、boolean.class、Boolean.class的区别:
1 | System.out.println(Boolean.TYPE.getName()); |

三、Boolean类的构造方法
很少适合使用此构造函数。静态工厂方法valueOf(boolean)通常是更好的选择,因为它具备明显更好的空间和时间性能。如果可能,还可以考虑使用final字段Boolean.TRUE和Boolean.FALSE。
1 |
|
如果字符串参数不为null并且在忽略大小写的情况下等于字符串“true”,则分配一个表示值true的Boolean对象。否则,分配一个表示值false的Boolean对象。很少适合使用此构造函数。可以考虑使用parseBoolean(String)方法把字符串转换为boolean基元类型,或者使用valueOf(String)方法把字符串转换为Boolean对象。
1 |
|

1 | public static boolean parseBoolean(String s) { |
四、Boolean类的valueOf方法
该方法返回一个对应于特定boolean值的Boolean对象,根据boolean值的不同返回TRUE或FALSE,该方法避免了创建额外的Boolean对象,使用到了预先定义的Boolean缓存,因此性能更加优异。
1 | public static Boolean valueOf(boolean b) { |

1 | public static Boolean valueOf(String s) { |
五、Boolean类的其他方法
booleanValue方法返回Boolean对象表示的基元类型值。
1 | public boolean booleanValue() { |
toString方法返回一个String对象,该对象表示指定的布尔值。如果指定的布尔值为true,则将返回字符串“true”,否则将返回字符串“false”。
1 | public static String toString(boolean b) { |
hashCode方法返回Boolean对象的哈希值。
1 | public int hashCode() { |
equals方法比较两个Boolean对象是否相等。
1 | public boolean equals(Object obj) { |

1 | public static boolean getBoolean(String name) { |

1 | public int compareTo(Boolean b) { |
以下三个方法是针对boolean值的逻辑操作,很简单:
1 | public static boolean logicalAnd(boolean a, boolean b) { |