java boolean 包_java Boolean包装类工作笔记
本文章为各位介绍一篇关于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包装类工作笔记相关推荐
- java boolean 包_JAVA之包装Boolean详解
包装类Boolean 1.构造方法: ①Boolean(Boolean bool)以boolean型作为参数创建Boolean对象: Boolean bool = new Boolean(true); ...
- java boolean 语法_Java Boolean booleanValue()方法
Java Boolean booleanValue()方法 java.lang.Boolean.booleanValue() 返回该Boolean对象作为一个布尔原始值. 1 语法 public bo ...
- java boolean例子_Java Boolean类实例
下面要为大家分享的就是一个Java Boolean类方面的实例,一起来看看具体的内容吧. 编写一个java程序,演示,怎样使用不同的构造方法创建Boolean对象,并且调用booleanValue() ...
- java boolean例子_Java Boolean booleanValue()用法及代码示例
布尔类的booleanValue()方法是Java中的一个内置方法,用于返回实例的原始布尔值,该实例的布尔值用于调用方法booleanValue(). 用法 BooleanObject.boolean ...
- java md5包_JAVA中有没有提供MD5算法的包啊?
拉莫斯之舞 有,在java.security包的MessageDigest类.例子:import java.security.MessageDigest;public class Test2 {pub ...
- java.awt包_java.awt包介绍
组件, Component类是所有AWT组件的根. 用户与组件交互操作时,一些组件会激发事件, AWTEvent类及其子类用于表达AWT组件能够激发的事件. 容器是一个可以含有组件和其他容器的组件, ...
- java.awt包_java.awt包 简介
java.awt有创建用户接口.绘图和图像的所有类.用户接口对象,例如按钮或滚动条, 在AWT(Abstrat Window Toolkit)中被称为组件, Component类是所有AWT组件的根. ...
- java解包_Java的原始类型自动包装与解包机制
java5之后对原始数据类型如int.char.long等基本数据类型有自动打包成相应的复合类型Integer.Character.Long等的机制:也可以将复合类型自动转换为原始类型. 这取决于程序 ...
- java newinstance 包_Java Class类 newInstance()方法及示例
Class类newInstance()方法newInstance()方法在java.lang包中可用. newInstance()方法用于创建此Class对象表示的类的新实例. newInstance ...
最新文章
- Web Components是不是Web的未来
- Spring+MyBatis
- linux目录结构 各个目录文件作用
- 聚类(三)FUZZY C-MEANS 模糊c-均值聚类算法——本质和逻辑回归类似啊
- ElasticSearch 5.5 离线环境的完整安装及配置详情,附kibana、ik插件配置及安装包下载路径...
- pandas保存新增sheet表,且不overwrite原有内容
- GDCM:gdcm::ByteSwapFilter的测试程序
- ios签名软件_使用ios企业签名需要准备哪些?
- (第八章)左右外连接
- antv | G2Plot 数据可视化图表库-案例
- 关于 NVIDIA 游戏内覆盖变成英文如何让其恢复中文
- 商淘软件多用户商城系统WSTMart v2.0.8程序发布
- java定义一个日期类 包括年 月 日_【说明】 设计一个日期类Date包括年、月、日等私有数据成员。要求实现日期..._考试资料网...
- 关于n阶线性齐次常微分的特征方程特征根相同时解的推导
- 四色定理已利用计算机证明,地图四色定理的非计算机证明.pdf
- 渗透测试-信息打点(红队工具篇)
- 【引用】行摄云之南(四):滇南大山深处的彝族娃娃--那纯洁的眼神@
- 深入浅出通信原理2021-03-07
- 直流微电网matlab仿真模型,直流微电网控制与仿真.pdf
- SVM算法逻辑推导与使用实例
热门文章
- python自动化办公入门书籍-盘点使用Python进行自动化办公所需要的知识点
- python工资一般多少-Python就业都有哪些岗位?每个岗位薪资多少?
- 一张图学会python3高清图-用一张很丑的图学习Python数据可视化基础--热力图
- python编程软件哪个好-来 看看谁最适合学Python编程
- python入门经典100题-Python3基础训练经典100题(带答案)下载
- python入门教程(非常详细)-python初学者怎么入门:python入门教程非常详细
- python经典实例-python经典实例
- 双Y轴echarts
- 交换机的基本配置实验报告_交换机入门配置,最基本的IP及登录方式配置,一分钟了解下...
- 判断文件是否损坏_Bash技巧:把变量赋值为换行符,判断文件是否以换行符结尾...