java源码分析(8)-Boolean

原创 2016年06月02日 10:24:12

Boolean

1.Boolean类

Boolean为final修饰,不能被继承,实现了java.io.Serializable接口和Comparable<Boolean>接口,可以序列化和进行比较,Boolean没有无参构造器。

public final class Boolean implements java.io.Serializable,
                                      Comparable<Boolean>
{
    public static final Boolean TRUE = new Boolean(true);//因为Boolean就只有两个值,故直接在jvm启动时便生成这两个值并建立引用
    public static final Boolean FALSE = new Boolean(false);
    public static final Class<Boolean> TYPE = Class.getPrimitiveClass("boolean");//Boolean类型为本地原始类
    private final boolean value;
    public Boolean(boolean value) {
	this.value = value;
    }
    public Boolean(String s) {//Boolean有一个可以传入字符串的构造器,只当字符串为“true”时,value为true,其余都为false
	this(toBoolean(s));
    }
    private static boolean toBoolean(String name) { 
        return ((name != null) && name.equalsIgnoreCase("true"));//只要name不为true,统一返回false
    }

2.parseBoolean

 public static boolean parseBoolean(String s) {
        return toBoolean(s);//再次使用了toBoolean方法,只有传入的字符串为true时,返回为true,其余都为false
    }

3.取值

Boolean取value值的函数不是getValue(),而是booleanValue()

    public boolean booleanValue() {
	return value;
    }
    public static Boolean valueOf(boolean b) {
        return (b ? TRUE : FALSE);//用于取boolean参数的boolean值
    }
    public static Boolean valueOf(String s) {
	return toBoolean(s) ? TRUE : FALSE;//用于取字符串参数的boolean值,遵照toBoolean的规则
    }

4.hashCode

public int hashCode() {
	return value ? 1231 : 1237;//Boolean的哈希值只有固定的两个值,true为1231,false为1237
    }

5.equals

重写了equals方法,将参数强转后比较value地址值(总共就只有两个地址值,true和false的地址值)

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

6.getBoolean

用于获取系统参数的boolean值,使用前要设置系统属性

 }
    public static boolean getBoolean(String name) {
        boolean result = false;
        try {
            result = toBoolean(System.getProperty(name));//比较的是系统参数,而不是普通的方法中传入的参数,要使返回值为true,必须先设置系统参数名,并设置值为true
        } catch (IllegalArgumentException e) {
        } catch (NullPointerException e) {
        }
        return result;
    }
7.compareTo
public int compareTo(Boolean b) {
        return (b.value == value ? 0 : (value ? 1 : -1));//true比false大
    }







版权声明:本文为博主原创文章,未经博主允许不得转载。

JDK源码分析Java.lang.Boolean的浅析——单例模式的应用(使我们更省内存)

JDK源码Java.lang.Boolean的理解和分析是什么呢,希望可以在对JDK源码Java.lang.Boolean的基础上分析其他的代码,举一反三掌握好JDK。 AD: ...

JDK源码分析:java.lang.Boolean

首先我们剔除所有的方法和静态变量,Boolean的核心代码如下: public final class Boolean implements java.io.Serializable,Compara...

JDK源码分析Java.lang.Boolean的浅析——单例模式的应用(使我们更省内存)

JDK源码Java.lang.Boolean的理解和分析是什么呢,希望可以在对JDK源码Java.lang.Boolean的基础上分析其他的代码,举一反三掌握好JDK。 AD: JDK...
  • novelly
  • novelly
  • 2012年02月08日 16:10
  • 923

JDK源码分析之 java.lang.Boolean

首先我们剔除所有的方法和静态变量,Boolean的核心代码如下:   public final class Boolean implements java.io.Serializable,Compa...

简单的Boolean源码

简单的Boolean源码 继承了java.io.Serializable, Comparable, 首先看看compareTo的实现,这里就可以看出源码果然比普通程序员的代码好 普通程序员一...

【Java8源码分析】NIO包-Buffer类:ByteBuffer与HeapByteBuffer(一)

转载请注明出处: 1 概述 Java NIO 由以下几个核心部分组成: Buffer Channel Selectors 相关类的使用方法可以参考Java NIO 系列教程...
  • linxdcn
  • linxdcn
  • 2017年06月07日 22:31
  • 776

【Java8源码分析】NIO包-Buffer类:内存映射文件DirectByteBuffer与MappedByteBuffer(二)

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/72896616
  • linxdcn
  • linxdcn
  • 2017年06月08日 21:16
  • 1098

【Java8源码分析】线程-ThreadLocal的全面剖析

一、背景ThreadLocal类顾名思义就是,申明为ThreadLocal的变量,对于不同线程来说都是独立的。下面是一个例子:public class Test { public static ...
  • linxdcn
  • linxdcn
  • 2017年05月31日 23:19
  • 766

【Java8源码分析】集合框架-TreeMap

一、红黑树原理TreeMap是基于红黑树实现的。一棵高度为h的二叉搜索树,它可以支持任何一种基本动态集合操作,其时间复杂度均为O(h)。当h较小时,执行会比较快。红黑树是许多“平衡”搜索树中的一种。 ...
  • linxdcn
  • linxdcn
  • 2017年05月21日 21:12
  • 718

【Java8源码分析】locks包-ReentrantReadWriteLock

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/728549241 ReadWriteLock的使用下面截取一段官网上的使用说明例子class...
  • linxdcn
  • linxdcn
  • 2017年06月03日 22:38
  • 697
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java源码分析(8)-Boolean
举报原因:
原因补充:

(最多只允许输入30个字)