背景:刚在看Effective Java,看到一段关于Boolean提供一个返回实例的静态方法的例子,便去看了下Boolean的源码,发现有些内容是之前没注意到的,于是便有了下面这些。
1、
Boolean类将基本类型boolean的值包装在一个对象中,一个Boolean对象之包含一个类型为boolean的字段,摘自源码:
    /**
     * The value of the Boolean.
     *
     * @serial
     */
    private final boolean value;
 
Boolean还提供了多个方法用于对boolean类型的基本操作,因为boolean是一个基本类型,没办法进行一些基本的操作。
 
2、
构造方法摘要
Boolean(boolean value) 
          分配一个表示 value 参数的 Boolean 对象。
Boolean(String s) 
          如果 String 参数不为 null 且在忽略大小写时等于 "true",则分配一个表示 true 值的 Boolean 对象。

需要注意的是:Boolean提供一个以String类型为参数的构造器

  Boolean flag1 = new Boolean("true");
  System.out.println(flag1); //输出true
 
  Boolean flag2 = new Boolean("abc");
  System.out.println(flag2); //输出false
 
3、Boolean的构造方法、parseBoolean(String name)、valueOf(String s)、getBoolean(String name)这四个方法内部都是调用的同一个方法toBoolean(),以下是摘自源码:
 
 public Boolean(String s) { 
        this(toBoolean(s));
    }
 
  public static boolean parseBoolean(String s) {
        return toBoolean(s);
    }
 
 public static Boolean valueOf(String s) {
        return toBoolean(s) ? TRUE : FALSE;
    }
 
 public static boolean getBoolean(String name) {
        boolean result = false;
        try {
            result = toBoolean(System.getProperty(name));
        } catch (IllegalArgumentException e) {
        } catch (NullPointerException e) {
        }
        return result;
    }
 
 private static boolean toBoolean(String name) {
        return ((name != null) && name.equalsIgnoreCase("true"));
    }
所以以上4个方法传入的字符串只有在为"true"的时候才会返回true,其他情况一律返回false。
 
4、关于Boolean比较符equals和==
其实还是和其他的对象一样,equals比较的是值,==比较的是对象在内存中的首地址
  Boolean flag1 = new Boolean("true");
  Boolean flag2 = new Boolean("true");
  System.out.println(flag1.equals(flag2)); //输出true
  System.out.println(flag1==flag2); //输出false
 
 
5、关于Boolean的compareTo(Boolean b )和compare(boolean x,boolean y)方法
以下摘自源码:
 public int compareTo(Boolean b) {
        return compare(this.value, b.value);
    }
 
 public static int compare(boolean x, boolean y) {
        return (x == y) ? 0 : (x ? 1 : -1);
    }
两者的区别在于compareTo是非静态方法,供实例变量使用,用于调用对象与参数对象的比较
compare是静态方法,供Boolean类使用,用于两个boolean值的比较
 
比较的共同点就是:比较对象表示的boolean值相同,则返回0,如果此对象表示 true,参数表示 false,则返回一个正值;如果此对象表示 false,参数表示 true,则返回一个负值
  Boolean flag1 = new Boolean("true");
  Boolean flag2 = new Boolean("true");
 
  System.out.println(flag1.compareTo(flag2)); //输出0
  System.out.println(Boolean.compare(true, false)); //输出1
  System.out.println(Boolean.compare(false, true)); //输出-1
 
 
 

1、关于Boolean(2015年05月30日)的更多相关文章

  1. Bootstrap之Footer页尾布局(2015年05月28日)

    直接上页尾部分的代码: <!--采用container-fluid,使得整个页尾的宽度为100%,并设置它的背景色--><footer class="container-f ...

  2. 初识Less(2015年05月23日)

    因为最近在研究Bootstrap,然后才了解到Less,听说Less很强大,又听说Bootstrap+Less会更搭,所以就决定也顺带了解下Less的相关知识. come  on...... 一.简介 ...

  3. 零基础学习云计算及大数据DBA集群架构师【Linux系统配置及网络配置2015年12月30日周三】

    /Mon *************摘要************** 计划任务 )一次性计划任务 服务:atd 命令:at 服务存放文件:/etc/init.d/atd 系统配置文件:/etc/at. ...

  4. 2015年11月30日 spring初级知识讲解(一)装配Bean

    序,Spring的依赖注入是学习spring的基础.IOC为控制反转,意思是需要的时候就由spring生成一个,而不是先生成再使用. 写在前面 Spring提供面向接口编程,面向接口编程与依赖注入协作 ...

  5. 初识CSS3之媒体查询(2015年05月31日)

    一.什么是媒体查询 媒体查询是面向不同设备提供不同样式的一种实现方式,它可以为每种类型的用户提供最佳的体验,也是响应式设计的实现方式. 现今每天都有更多的手机和平板电脑问市.消费者能够拥有可想象到的各 ...

  6. java之enum枚举(2015年05月28日)

    背景: 今天启动了一个新的项目,由于要从之前的旧项目中拿过来一些代码,所以就看了下公司之前项目代码,发现有定义的常量类,也有枚举类,然后就在想着两者的功能差不多,那他们之间到底有什么区别呢,所以就决定 ...

  7. 实用工具推荐(Live Writer)(2015年05月26日)

    1.写博客的实用工具 推荐软件:Live Writer 使用步骤: 1.安装 Live Essential 2011,下载地址:http://explore.live.com/windows-live ...

  8. Font Awesome图标字体库(2015年05月25日)

    Font Awesome是一款非常棒的字体图标工具,给个地址,具体的自已慢慢去体会,只能帮你到这儿了...... http://fortawesome.github.io/Font-Awesome/ ...

  9. Bootstrap插件之Carousel轮播效果(2015年-05月-21日)

    <!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"& ...

随机推荐

  1. Linux系统管理员应该了解的一些I/O统计工具

    作为一个Linux系统管理员,统计各类IO是一项必不可少的工作.其统计工具中iostat显然又是最重要的一个统计手段.但是这里iostat不是本文的重点,因为这个工具的使用在网络上已经有大量的教程,可 ...

  2. spring对数据库特殊字段的支持

    1.CLOB <property name="tomdTemplateContent" type="org.springframework.orm.hibernat ...

  3. VC中监测函数运行时间(一)—分钟,秒,毫秒

    //myTimer.h // [10/16/2013 Duan Yihao] #pragma once #include "StdAfx.h" ////////////////// ...

  4. request,response,session

    1.request.getParameter("key")接受的是来自客户登陆端的数据,接受的是post或get方式传送的value. 2.请求的默认字符集是ISO-8859-1, ...

  5. 蓝底白字到图形界面 主板BIOS发展简记

    本文转载:http://mb.zol.com.cn/229/2295738.html http://www.360doc.com/content/12/0306/14/1309227_19219857 ...

  6. HDOJ 1151 Air Raid

    最小点覆盖 Air Raid Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  7. Codeforces Gym 100002 E "Evacuation Plan" 费用流

    "Evacuation Plan" Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10 ...

  8. Codeforces Gym 100431G Persistent Queue 可持久化队列

    Problem G. Persistent QueueTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudg ...

  9. Asp.net 使用正则和网络编程抓取网页数据(有用)

    Asp.net 使用正则和网络编程抓取网页数据(有用) Asp.net 使用正则和网络编程抓取网页数据(有用) /// <summary> /// 抓取网页对应内容 /// </su ...

  10. cocos2dx 3.1从零学习(一)——入门篇(一天学会打飞机)

    没办法,浏览这么高,为啥没人投票呢?朋友们,我这篇文章參加了csdn博文大赛.喜欢的来点个赞吧!点击:http://vote.blog.csdn.net/Article/Details?article ...