一、概述

这个类依然是Arthur van Hoff这哥们写的,是对基本数据类型boolean的一个包装,源码的注释说的很清楚:

An object of type Boolean contains a single field whose type is boolean.这个类中有个属性的类型是基本类型boolean

这个类为boolean提供了很多boolean和String互相转换的方法,以及提供了当处理boolean的时的一些常量和方法。

二、常见方法

1.类定义如下:

public final class Boolean implements java.io.Serializable,Comparable<Boolean>

2.五个属性

    //对应于基本类型boolean中的truepublic static final Boolean TRUE = new Boolean(true);public static final Boolean FALSE = new Boolean(false);// 表示基本布尔型的类对象public static final Class<Boolean> TYPE = (Class<Boolean>) Class.getPrimitiveClass("boolean");//The value of the Boolean.private final boolean value;/** use serialVersionUID from JDK 1.0.2 for interoperability */private static final long serialVersionUID = -3665804199014368530L;

3.构造方法:

    public Boolean(boolean value) {this.value = value;}

但这个构造方法一般情况下很少被用到,都是使用他的静态工厂方法valueOf(boolean)的,这个工厂方法有更好的时空间性能优势。此外,还提供了一个字符串参数的构造:

    public Boolean(String s) {this(parseBoolean(s));}

具体逻辑在方法parseBoolean中,

    public static boolean parseBoolean(String s) {//传入的字符串非空并且为忽略大小写的true时,返回true,否则返回falsereturn ((s != null) && s.equalsIgnoreCase("true"));}

静态构造工厂(官方文档就是这么叫的),性能好:

    public static Boolean valueOf(boolean b) {return (b ? TRUE : FALSE);}//String参数的public static Boolean valueOf(String s) {return parseBoolean(s) ? TRUE : FALSE;}

4.hashCode方法,一个是1231,一个是1237

    public static int hashCode(boolean value) {return value ? 1231 : 1237;}

5.equals

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

6.getBoolean

从系统参数中获取参数名对应的值,如果是“true”就返回true。否则抛出参数异常或空指针异常。

    public static boolean getBoolean(String name) {boolean result = false;try {result = parseBoolean(System.getProperty(name));} catch (IllegalArgumentException | NullPointerException e) {}return result;}

7.compare

比较两个布尔值是否相等,相等返回0,否则第一个参数是true返回1,第一个参数是false返回-1。

三、特殊点的方法

三个逻辑方法:

    public static boolean logicalAnd(boolean a, boolean b) {return a && b;}public static boolean logicalOr(boolean a, boolean b) {return a || b;}public static boolean logicalXor(boolean a, boolean b) {return a ^ b;}

JDK源码(7)-Boolean相关推荐

  1. JDK源码研究Jstack,JMap,threaddump,dumpheap的原理

    JDK最新bug和任务领取:https://bugs.openjdk.java.net/projects/JDK/issues 参加OpenJDK社区:https://bugs.openjdk.jav ...

  2. 调试JDK源码-ConcurrentHashMap实现原理

    调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...

  3. 调试JDK源码-一步一步看HashMap怎么Hash和扩容

    调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...

  4. 调试JDK源码-Hashtable实现原理以及线程安全的原因

    调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...

  5. Java是如何实现自己的SPI机制的? JDK源码(一)

    注:该源码分析对应JDK版本为1.8 1 引言 这是[源码笔记]的JDK源码解读的第一篇文章,本篇我们来探究Java的SPI机制的相关源码. 2 什么是SPI机制 那么,什么是SPI机制呢? SPI是 ...

  6. java int类源码,一起学JDK源码 -- Integer类

    Integer类为java基本类型int的包装类,除了前面提到的Byte类,Short类中的大部分方法,Integer类中还提供了很多处理int类型的方法,接下来就让我们一起看看吧. 基础知识: 1. ...

  7. 从JDK源码角度看Long

    概况 Java的Long类主要的作用就是对基本类型long进行封装,提供了一些处理long类型的方法,比如long到String类型的转换方法或String类型到long类型的转换方法,当然也包含与其 ...

  8. JDK源码解析 迭代器模式在JAVA的很多集合类中被广泛应用,接下来看看JAVA源码中是如何使用迭代器模式的。

    JDK源码解析 迭代器模式在JAVA的很多集合类中被广泛应用,接下来看看JAVA源码中是如何使用迭代器模式的. 看完这段代码是不是很熟悉,与我们上面代码基本类似.单列集合都使用到了迭代器,我们以Arr ...

  9. JDK源码解析 Runable是一个典型命令模式,Runnable担当命令的角色,Thread充当的是调用者,start方法就是其执行方法

    JDK源码解析 Runnable是一个典型命令模式, Runnable担当命令的角色,Thread充当的是调用者,start方法就是其执行方法 /命令接口(抽象命令角色) public interfa ...

  10. JDK源码解析 Integer类使用了享元模式

    JDK源码解析 Integer类使用了享元模式. 我们先看下面的例子: public class Demo {public static void main(String[] args) {Integ ...

最新文章

  1. 【剑指offer-Java版】35第一个只出现一次的字符
  2. 宽度如何设置 滑动条_【Axure9百例】26.得到交互设计左右滑动
  3. OpenGL相机控制之一
  4. 2015服务器性能排名,【新年大礼】史上最全CPU天梯图2015年V3.5版 全平台性能对比参考...
  5. 【转】Azure 应用服务计划概述
  6. Pytorch torchvision完成Faster-rcnn目标检测demo及源码详解
  7. 生鲜连锁品牌天鲜配获千万级PreA轮战略投资,2018年销售额将达1亿元
  8. 局部加权线性回归,线性回归高级版
  9. svm中的数学和算法
  10. 1040. 有几个PAT(25)
  11. the third assignment of software testing
  12. ORA-07445ORA-00108错误案例
  13. 数据库SQL调优的几种方式
  14. jeDate 日期控件
  15. Linux 面试最常问的十个问题
  16. 将java或javaweb项目打包为jar包或war包
  17. 基于ECharts和腾讯疫情数据接口的全球疫情地图(超全)
  18. Farkas 定理的几何证明
  19. 明月当空照,python3D编程初阶:坐标、模型、纹理与光
  20. 旋转框目标检测mmrotate v0.3.1入门

热门文章

  1. Java线程间通信-回调的实现方式
  2. 谷歌浏览器桌面通知 HTML5 Chrome Desktop Notifications
  3. c++ 一个简单的学生 类
  4. 收获,不止SQL优化——抓住SQL的本质--第十章
  5. 如何避免用动态语言的思维写Go代码
  6. golang 切片追加问题
  7. 微信小程序图片上下有等值空白问题
  8. php老鸟,老鸟谈PHP数组排序
  9. QEMU模拟Cortex-A9,运行kernel、rootfs
  10. AD转换中参考电压的作用 .