Boolean类里面的常量:

Boolean.TRUE:这个是调用Boolean的构造函数,新建了一个Boolean对象,所以TRUE是Boolean类型的。用来避免每次都创建新的Boolean对象,可以通过Boolean b =  Boolean.TRUE;

public static finalBoolean TRUE = new Boolean(true);

Boolean.FALSE:这个是调用Boolean的构造函数,新建了一个Boolean对象,所以FALSE是Boolean类型的。

public static finalBoolean FALSE = new Boolean(false);

Boolean.TYP:TYPE的类型是Class<Boolean>,通过调用Calss<T>是一个带有泛型的final类

这里通过调用Class的static native 的getPrimitiveClass(String name)方法,返回Class对象

public static final Class<Boolean>TYPE = Class.getPrimitiveClass("boolean");

Boolean的两个构造类

第一个参数是boolean类型的时候。

public Boolean(boolean value) {

this.value = value;

}

第 二个参数是String类型的时候,这个地方调用了toBoolean(String s)方法,toBoolean(Strin g s)是一个private方法,返回的类型是boolean类型。这个地方只有是字符串是“true”(不管其大小写)的时候返回true,其他时候都返 回false。

public Boolean(String s) {

this(toBoolean(s));

}

private static boolean toBoolean(Stringname) {

return ((name != null) &&name.equalsIgnoreCase("true"));

}

这个如同Integer.parseInt(String s)方法,都是将String转换成自己类型的对象,这里转换成boolean类型,这里与构造函数相同,都是调用toBoolean(Strin g s)方法

public static boolean parseBoolean(Strings) {

return toBoolean(s);

}

这个方法是进行了拆箱操作,将Boolean类型的值转换成boolean类型

public boolean booleanValue() {

return value;

}

这个方法如同Integer的valueof(int i)方法,这里也是返回一个Boolean类型的实例,这个实例也是早就创建好的,这个地方就是采用了装箱操作,只不过是用了缓存里面提前创建好的实例.这是创建Boolean对象的静态工厂方法

public static Boolean valueOf(boolean b) {

return (b ? TRUE : FALSE);

}

将boolean类型转换成String类型

public static String toString(boolean b) {

return b ? "true" : "false";

}

将Boolean类型的值转换成String类型

public String toString() {

return value ? "true" : "false";

}

将Boolean类型的值转换成对应的hashCode

这里讲解一下为什么是1231,1237,这两个已经是足够大的素数了。首先不能是复合数,对于hash表或者hash map来说,容易产生冲突,如果比较小的素数,可能会出现不平均分配

public int hashCode() {

return value ? 1231 : 1237;

}

比较两个Boolean对象是否相等,通过转换成boolean类型进行比较,最后返回boolean类型的数据。

public boolean equals(Object obj) {

if (obj instanceof Boolean) {

return value == ((Boolean)obj).booleanValue();

}

return false;

}

判断系统属性存在并且是字符串“true”,如果不是,则返回false

public static boolean getBoolean(Stringname) {

boolean result = false;

try {

result = toBoolean(System.getProperty(name));

} catch (IllegalArgumentException e) {

} catch (NullPointerException e) {

}

return result;

}

比较两个boolean类型的变量,如果相等返回0,如果不相等,第一个变量为true,返回1;第一个变量为false返回-1

public static int compare(boolean x,boolean y) {

return (x == y) ? 0 : (x ? 1 : -1);

}

//比较两个Boolean类型的变量,调用的compare(booleanx, boolean y)方法

public int compareTo(Boolean b) {

return compare(this.value, b.value);

}

Boolean类源码分析的更多相关文章

  1. List 接口以及实现类和相关类源码分析

    List 接口以及实现类和相关类源码分析 List接口分析 接口描述 用户可以对列表进行随机的读取(get),插入(add),删除(remove),修改(set),也可批量增加(addAll),删除( ...

  2. Java Properties类源码分析

    一.Properties类介绍 java.util.Properties继承自java.util.Hashtable,从jdk1.1版本开始,Properties的实现基本上就没有什么大的变动.从ht ...

  3. java中List接口的实现类 ArrayList,LinkedList,Vector 的区别 list实现类源码分析

    java面试中经常被问到list常用的类以及内部实现机制,平时开发也经常用到list集合类,因此做一个源码级别的分析和比较之间的差异. 首先看一下List接口的的继承关系: list接口继承Colle ...

  4. Java并发编程笔记之Unsafe类和LockSupport类源码分析

    一.Unsafe类的源码分析 JDK的rt.jar包中的Unsafe类提供了硬件级别的原子操作,Unsafe里面的方法都是native方法,通过使用JNI的方式来访问本地C++实现库. rt.jar ...

  5. String 类源码分析

    String 源码分析 String 类代表字符序列,Java 中所有的字符串字面量都作为此类的实例. String 对象是不可变的,它们的值在创建之后就不能改变,因此 String 是线程安全的. ...

  6. Cocos2d-X3.0 刨根问底(六)----- 调度器Scheduler类源码分析

    上一章,我们分析Node类的源码,在Node类里面耦合了一个 Scheduler 类的对象,这章我们就来剖析Cocos2d-x的调度器 Scheduler 类的源码,从源码中去了解它的实现与应用方法. ...

  7. Java线程池ThreadPoolExecutor类源码分析

    前面我们在java线程池ThreadPoolExecutor类使用详解中对ThreadPoolExector线程池类的使用进行了详细阐述,这篇文章我们对其具体的源码进行一下分析和总结: 首先我们看下T ...

  8. Cocos2d-X3.0 刨根问底(三)----- Director类源码分析

    上一章我们完整的跟了一遍HelloWorld的源码,了解了Cocos2d-x的启动流程.其中Director这个类贯穿了整个Application程序,这章随小鱼一起把这个类分析透彻. 小鱼的阅读源码 ...

  9. Spring之WebContext不使用web.xml启动 初始化重要的类源码分析(Servlet3.0以上的)

    入口: org.springframework.web.SpringServletContainerInitializer implements ServletContainerInitializer ...

随机推荐

  1. mybatis0208 缓存

    查询缓存 1.1缓存的意义 数据在磁盘会有一个IO,高并发读取效率就很低,将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效 ...

  2. QSplashScreen类实现Qt程序启动画面

      QSplashScreen类实现Qt程序启动画面 收藏人:zwsj     2013-09-13 | 阅:569  转:6    |   来源   |  分享               程序启动 ...

  3. document.documentElement.style判断浏览器是否支持Css3属性

    1.document.documentElement.style 属性定义了当前浏览器支持的所有Css属性 包括带前缀的和不带前缀的 例如:animation,webkitAnimation,msAn ...

  4. Difference Between XML and XAML.

    XML, or Extensible Markup Language, is a subset  of the more complex SGML (Standard Generalized Mark ...

  5. SGU 125.Shtirlits

    时间限制:0.25s 空间限制:4M 题意: 有N*N的矩阵(n<=3),对所有i,j<=n有G[i][j]<=9,定义f[i][j]为G[i][j]四周大于它的数的个数(F[i][ ...

  6. php之文件上传类代码

    /* 单个文件上传 功能 上传文件 配置允许的后缀 配置允许的大小 获取文件后缀 判断文件的后缀 报错 */ class UpTool{ protected $allowExt = 'jpg,jpeg ...

  7. node应用通过multer模块实现文件上传

    multer用于处理文件上传的nodejs中间件,主要跟express框架搭配使用,只支持表单MIME编码为multipart/form-data类型的数据请求. 如果要处理其他编码的表单数据可以通过 ...

  8. 除法(Division ,UVA 725)-ACM集训

    参考:http://www.cnblogs.com/xiaobaibuhei/p/3301110.html 算法学到很弱,连这么简单个问题都难到我了.但我偏不信这个邪,终于做出来了.不过,是参照别人的 ...

  9. 用Web Picasa API搭建站内相册

    在flickr时代,为了专门把站内嵌入相册,还专门写了一篇文章把Flickr相册搬回家.flickr被墙之后,我就把个人相册转到了Web Picasa上.用Picasa Web就简单多了,官方提供了S ...

  10. UFLDL实验报告3:Self-taught

    Self-taught 自我学习器实验报告 1.Self-taught 自我学习实验描述 自我学习是无监督特征学习算法,自我学习意味着算法能够从未标注数据中学习,从而使机器学习算法能够获得更大数量的数 ...