本文章为各位介绍一篇关于java Boolean包装类工作笔记,希望这篇文章能够帮助到各位同学,有兴趣的朋友可以进来看看吧。

题目:问下列代码运行结果是什么?

 代码如下 复制代码

package quiz;

public class Quiz22 {

static String str;

public static boolean test1(){

return new Boolean("1");

}

public static boolean test2(){

return new Boolean(str);

}

public static void main(String[] args) {

if(test1())

System.out.print("1");

if(!test2())

System.out.print("2");

if(test1() != test2())

System.out.print("3");

}

}

输出:

2

先看下Boolean类的源代码:(部分省略了,只保留了关键代码)

 代码如下 复制代码

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

{

private final boolean value;

public Boolean(boolean value) {

this.value = value;

}

public Boolean(String s) {

this(toBoolean(s));

}

public static int compare(boolean x, boolean y) {

return (x == y) ? 0 : (x ? 1 : -1);

}

private static boolean toBoolean(String name) {

return ((name != null) && name.equalsIgnoreCase("true"));

}

public boolean equals(Object obj) {

if (obj instanceof Boolean) {

return value == ((Boolean)obj).booleanValue();

}

return false;

}

public int compareTo(Boolean b) {

return compare(this.value, b.value);

}

public static boolean parseBoolean(String s) {

return toBoolean(s);

}

public static Boolean valueOf(boolean b) {

return (b ? TRUE : FALSE);

}

/**

* Returns a {@code Boolean} with a value represented by the

* specified string.  The {@code Boolean} returned represents a

* true value if the string argument is not {@code null}

* and is equal, ignoring case, to the string {@code "true"}.

*

* @param   s   a string.

* @return  the {@code Boolean} value represented by the string.

*/

public static Boolean valueOf(String s) {

return toBoolean(s) ? TRUE : FALSE;

}

public String toString() {

return value ? "true" : "false";

}

/**

* Returns a hash code for this {@code Boolean} object.

*

* @return  the integer {@code 1231} if this object represents

* {@code true}; returns the integer {@code 1237} if this

* object represents {@code false}.

*/

public int hashCode() {

return value ? 1231 : 1237;

}

}

从上面可以看出:

1.Boolean支持使用String或boolean来创建对象。

如果是用boolean构建的,则Boolean对象自动拆箱后还是原来的值。

如果是用string来构建对象,则如果该String为null或string.equalsIgnoreCase("true")返回false,则Boolean拆箱后的值就为false。

2.Boolean类实现了Comparable接口,即实现了ComparaTo方法

分析题目:

test1()  等价于 (new Boolean("1")) 自动拆箱 ,则为 false

!test2()等价于  ! (new Boolean(str)   自动拆箱)    ,因为str为null,所以结果true。

test1() != test2()    ,结果为 false

如果test1和test2方法的返回值不是boolean,而是Boolean对象,则结果就不一样了。因为是new两个对象,地址肯定不同,而且Boolean代码中不想Integer有cache。

 代码如下 复制代码

public class DecoratorPatternEx {

public static void main(String[] args) {

Boolean a =   new Boolean("1");

Boolean b =   new Boolean("1");

Boolean  a1 = new Boolean(true);

Boolean b1 = new Boolean(true);

if ( a == b){

System.out.println( true);

}else {

System.out.println(false);

}

if ( a1 == b1){

System.out.println( true);

}else {

System.out.println(false);

}

}

}

结果:

false

false

java boolean 包_java Boolean包装类工作笔记相关推荐

  1. java boolean 包_JAVA之包装Boolean详解

    包装类Boolean 1.构造方法: ①Boolean(Boolean bool)以boolean型作为参数创建Boolean对象: Boolean bool = new Boolean(true); ...

  2. java boolean 语法_Java Boolean booleanValue()方法

    Java Boolean booleanValue()方法 java.lang.Boolean.booleanValue() 返回该Boolean对象作为一个布尔原始值. 1 语法 public bo ...

  3. java boolean例子_Java Boolean类实例

    下面要为大家分享的就是一个Java Boolean类方面的实例,一起来看看具体的内容吧. 编写一个java程序,演示,怎样使用不同的构造方法创建Boolean对象,并且调用booleanValue() ...

  4. java boolean例子_Java Boolean booleanValue()用法及代码示例

    布尔类的booleanValue()方法是Java中的一个内置方法,用于返回实例的原始布尔值,该实例的布尔值用于调用方法booleanValue(). 用法 BooleanObject.boolean ...

  5. java md5包_JAVA中有没有提供MD5算法的包啊?

    拉莫斯之舞 有,在java.security包的MessageDigest类.例子:import java.security.MessageDigest;public class Test2 {pub ...

  6. java.awt包_java.awt包介绍

    组件, Component类是所有AWT组件的根. 用户与组件交互操作时,一些组件会激发事件, AWTEvent类及其子类用于表达AWT组件能够激发的事件. 容器是一个可以含有组件和其他容器的组件, ...

  7. java.awt包_java.awt包 简介

    java.awt有创建用户接口.绘图和图像的所有类.用户接口对象,例如按钮或滚动条, 在AWT(Abstrat Window Toolkit)中被称为组件, Component类是所有AWT组件的根. ...

  8. java解包_Java的原始类型自动包装与解包机制

    java5之后对原始数据类型如int.char.long等基本数据类型有自动打包成相应的复合类型Integer.Character.Long等的机制:也可以将复合类型自动转换为原始类型. 这取决于程序 ...

  9. java newinstance 包_Java Class类 newInstance()方法及示例

    Class类newInstance()方法newInstance()方法在java.lang包中可用. newInstance()方法用于创建此Class对象表示的类的新实例. newInstance ...

最新文章

  1. Web Components是不是Web的未来
  2. Spring+MyBatis
  3. linux目录结构   各个目录文件作用
  4. 聚类(三)FUZZY C-MEANS 模糊c-均值聚类算法——本质和逻辑回归类似啊
  5. ElasticSearch 5.5 离线环境的完整安装及配置详情,附kibana、ik插件配置及安装包下载路径...
  6. pandas保存新增sheet表,且不overwrite原有内容
  7. GDCM:gdcm::ByteSwapFilter的测试程序
  8. ios签名软件_使用ios企业签名需要准备哪些?
  9. (第八章)左右外连接
  10. antv | G2Plot 数据可视化图表库-案例
  11. 关于 NVIDIA 游戏内覆盖变成英文如何让其恢复中文
  12. 商淘软件多用户商城系统WSTMart v2.0.8程序发布
  13. java定义一个日期类 包括年 月 日_【说明】 设计一个日期类Date包括年、月、日等私有数据成员。要求实现日期..._考试资料网...
  14. 关于n阶线性齐次常微分的特征方程特征根相同时解的推导
  15. 四色定理已利用计算机证明,地图四色定理的非计算机证明.pdf
  16. 渗透测试-信息打点(红队工具篇)
  17. 【引用】行摄云之南(四):滇南大山深处的彝族娃娃--那纯洁的眼神@
  18. 深入浅出通信原理2021-03-07
  19. 直流微电网matlab仿真模型,直流微电网控制与仿真.pdf
  20. SVM算法逻辑推导与使用实例

热门文章

  1. python自动化办公入门书籍-盘点使用Python进行自动化办公所需要的知识点
  2. python工资一般多少-Python就业都有哪些岗位?每个岗位薪资多少?
  3. 一张图学会python3高清图-用一张很丑的图学习Python数据可视化基础--热力图
  4. python编程软件哪个好-来 看看谁最适合学Python编程
  5. python入门经典100题-Python3基础训练经典100题(带答案)下载
  6. python入门教程(非常详细)-python初学者怎么入门:python入门教程非常详细
  7. python经典实例-python经典实例
  8. 双Y轴echarts
  9. 交换机的基本配置实验报告_交换机入门配置,最基本的IP及登录方式配置,一分钟了解下...
  10. 判断文件是否损坏_Bash技巧:把变量赋值为换行符,判断文件是否以换行符结尾...