背景:刚在看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. TMS320F2803x系列实时控制 MCU 技术文档

      C2000系列实时控制器简介: C2000 生产选择指南 sprufk8.pdf 数据表: 中文板:TMS320F28030/28031/28032/28033/28034/28035 Picco ...

  2. 微软IIS服务器的最佳优化工具- IIS Tuner

      dudu的 <让Windows Server 2008 + IIS 7+ ASP.NET 支持10万个同时请求>,里面涉及到需要手工调整参数的地方.在这篇文章中,我们给你介绍一个IIS ...

  3. ORACLE R12 MOAC

    MOAC简介 MOAC(Multi-Org Access Control)为多组织访问控制,是Oracle EBS R12的重要新功能.它可以实现在一个Responsibility下对多个OU(Ope ...

  4. iOS开发-为程序添加应用设置

    一.设置捆绑包 设置捆绑包是应用自带的一组文件,用于告诉设置该应用期望得到用户的哪些偏好设置. 新建设置捆绑包:Command+N,在iOS部分中的Resource,选择Settings Bundle ...

  5. LVM 创建分区扩展分区记录

    LVM 原理   图片来自百度百科   测试环境centOS 7                 LVM version:     2.02.115(2)-RHEL7 (2015-01-28)     ...

  6. 使用Navicat for Oracle工具连接oracle的图文教程

    点评:今天上网的时候偶然发现了一款oracle的客户端的图形化管理和开发工具,当看到这个界面的时候,感觉很舒服,便上网搜了一下这个工具,看百度百科之后感觉很出乎我的意料,这个产品对于许多的数据库竟都有 ...

  7. POJ 1979 dfs和bfs两种解法

      fengyun@fengyun-server:~/learn/acm/poj$ cat 1979.cpp #include<cstdio> #include<iostream&g ...

  8. Ubuntu Kylin14.04终于可以使用root登陆了

    Ubuntu Kylin14.04怎样使用root登陆? 方法:找到/usr/share/lightm/ightm.conf.d         用gedit或者vi 打开50-unity-greet ...

  9. poj 1087 C - A Plug for UNIX 网络流最大流

    C - A Plug for UNIXTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contes ...

  10. Java 装饰模式 (Decorator)

    装饰模式 动态的将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的取代方案 代码 package gx.component; /** * 组件:装饰类和被装饰类 都要继承:为了类型保持一致 ...