JDK之Boolean源码解析
2017-05-10 17:24
549 查看
刚入java不久的程序猿,对于简单的使用已毫不满足,最终为了一探究竟,翻开了JDK的源码,以下观点为自己的理解及看了多篇博客的总结,欢迎各位大神指出不对的地方,当然也欢迎和我一样刚学的同学,一起加油努力吧~~
忙了好一阵子,终于闲下来有时间写写博客,今天大家一起来看看Boolean的源码
好了,Boolean类到这里就看完了,总体来说还是比较简单的
Boolean源码解析 |
/** * Boolean包装类 * 实现Serializable接口,使该类可以被序列化 * 实现Comparable接口,使该类可以进行比较 */ public final class Boolean implements java.io.Serializable, Comparable<Boolean> { /** * 值为true的Boolean对象 */ public static final Boolean TRUE = new Boolean(true); /** * 值为false的Boolean对象 */ public static final Boolean FALSE = new Boolean(false); /** * boolean类型字节码 */ public static final Class<Boolean> TYPE = Class.getPrimitiveClass("boolean"); /** * 包装类Boolean的值 */ private final boolean value; /** 版本号 */ private static final long serialVersionUID = -3665804199014368530L; /** * Boolean构造方法,参数为boolean类型值 */ public Boolean(boolean value) { this.value = value; } /** * Boolean构造方法,参数为字符串,调用toBoolean方法后将值转换为boolean类型后调用上面的构造方法 */ public Boolean(String s) { this(toBoolean(s)); } /** * 将字符串转换为boolean值 */ public static boolean parseBoolean(String s) { return toBoolean(s); } /** * 获取包装类Boolean的值 */ public boolean booleanValue() { return value; } /** * 将基础类型boolean转换为包装类 */ public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE); } /** * 将字符串类型boolean值转换为包装类 */ public static Boolean valueOf(String s) { return toBoolean(s) ? TRUE : FALSE; } /** * 将boolean值转换为字符串 */ public static String toString(boolean b) { return b ? "true" : "false"; } /** * 将值value转换为字符串 */ public String toString() { return value ? "true" : "false"; } /** * 返回哈希值,true为1231,false为1237 */ public int hashCode() { return value ? 1231 : 1237; } /** * 包装类比较方法 */ public boolean equals(Object obj) { //判断obj是否为Boolean类型 if (obj instanceof Boolean) { 比较两个对象的值是否相等 return value == ((Boolean)obj).booleanValue(); } return false; } /** * 根据名字获取boolean值 */ public static boolean getBoolean(String name) { boolean result = false; try { result = toBoolean(System.getProperty(name)); } catch (IllegalArgumentException e) { } catch (NullPointerException e) { } return result; } /** * 比较两个Boolean值大小,调用compare方法 */ public int compareTo(Boolean b) { return compare(this.value, b.value); } /** * 传入两个boolean值比较 */ public static int compare(boolean x, boolean y) { return (x == y) ? 0 : (x ? 1 : -1); } /** * 根据名字转换为boolean值 * 当name不为空并且name等于true时(忽略大小写),返回true,否则返回false */ private static boolean toBoolean(String name) { return ((name != null) && name.equalsIgnoreCase("true")); } }
好了,Boolean类到这里就看完了,总体来说还是比较简单的
相关文章推荐
- JDK源码解析之ArrayList
- JDK源码分析之 java.lang.Boolean
- JDK源码分析:java.lang.Boolean
- JDK 源码解析 —— Java 内存模型
- JDk Set及HashSet源码解析
- JDK源码分析:java.lang.Boolean
- JDK 源码解析 —— Integer
- django源码解析之 BooleanField (三)
- django源码解析之 BooleanField (二)
- JDK源码解析之ThreadLocal类
- 【jdk源码解析一】java.util.Observer与java.util.Observable
- java ArrayList 源码解析(jdk1.6)
- BigInteger类实例的构造过程——JDK源码解析
- 通过JDK源码解析Thread(Runable target ...)调用的是哪个run方法
- JDK源码解析之ThreadLocal类
- JDK源码分析Java.lang.Boolean的浅析——单例模式的应用(使我们更省内存)
- java动态代理Proxy源码解析(Jdk 1.6)
- 【jdk源码解析四】java.uti.HashSet源码解析
- 排序算法---快速排序(JDK1.7 DualPivotQuicksort 源码解析)
- JDK 源码解析 —— ConcurrentHashMap