JDK源码(7)-Boolean
一、概述
这个类依然是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相关推荐
- JDK源码研究Jstack,JMap,threaddump,dumpheap的原理
JDK最新bug和任务领取:https://bugs.openjdk.java.net/projects/JDK/issues 参加OpenJDK社区:https://bugs.openjdk.jav ...
- 调试JDK源码-ConcurrentHashMap实现原理
调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...
- 调试JDK源码-一步一步看HashMap怎么Hash和扩容
调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...
- 调试JDK源码-Hashtable实现原理以及线程安全的原因
调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...
- Java是如何实现自己的SPI机制的? JDK源码(一)
注:该源码分析对应JDK版本为1.8 1 引言 这是[源码笔记]的JDK源码解读的第一篇文章,本篇我们来探究Java的SPI机制的相关源码. 2 什么是SPI机制 那么,什么是SPI机制呢? SPI是 ...
- java int类源码,一起学JDK源码 -- Integer类
Integer类为java基本类型int的包装类,除了前面提到的Byte类,Short类中的大部分方法,Integer类中还提供了很多处理int类型的方法,接下来就让我们一起看看吧. 基础知识: 1. ...
- 从JDK源码角度看Long
概况 Java的Long类主要的作用就是对基本类型long进行封装,提供了一些处理long类型的方法,比如long到String类型的转换方法或String类型到long类型的转换方法,当然也包含与其 ...
- JDK源码解析 迭代器模式在JAVA的很多集合类中被广泛应用,接下来看看JAVA源码中是如何使用迭代器模式的。
JDK源码解析 迭代器模式在JAVA的很多集合类中被广泛应用,接下来看看JAVA源码中是如何使用迭代器模式的. 看完这段代码是不是很熟悉,与我们上面代码基本类似.单列集合都使用到了迭代器,我们以Arr ...
- JDK源码解析 Runable是一个典型命令模式,Runnable担当命令的角色,Thread充当的是调用者,start方法就是其执行方法
JDK源码解析 Runnable是一个典型命令模式, Runnable担当命令的角色,Thread充当的是调用者,start方法就是其执行方法 /命令接口(抽象命令角色) public interfa ...
- JDK源码解析 Integer类使用了享元模式
JDK源码解析 Integer类使用了享元模式. 我们先看下面的例子: public class Demo {public static void main(String[] args) {Integ ...
最新文章
- 【剑指offer-Java版】35第一个只出现一次的字符
- 宽度如何设置 滑动条_【Axure9百例】26.得到交互设计左右滑动
- OpenGL相机控制之一
- 2015服务器性能排名,【新年大礼】史上最全CPU天梯图2015年V3.5版 全平台性能对比参考...
- 【转】Azure 应用服务计划概述
- Pytorch torchvision完成Faster-rcnn目标检测demo及源码详解
- 生鲜连锁品牌天鲜配获千万级PreA轮战略投资,2018年销售额将达1亿元
- 局部加权线性回归,线性回归高级版
- svm中的数学和算法
- 1040. 有几个PAT(25)
- the third assignment of software testing
- ORA-07445ORA-00108错误案例
- 数据库SQL调优的几种方式
- jeDate 日期控件
- Linux 面试最常问的十个问题
- 将java或javaweb项目打包为jar包或war包
- 基于ECharts和腾讯疫情数据接口的全球疫情地图(超全)
- Farkas 定理的几何证明
- 明月当空照,python3D编程初阶:坐标、模型、纹理与光
- 旋转框目标检测mmrotate v0.3.1入门