最新消息:

面试:java Boolean包装类

JAVA 大步 946浏览 0评论
题目:问下列代码运行结果是什么?
输出:
2
先看下Boolean类的源代码:(部分省略了,只保留了关键代码)
从上面可以看出:
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。

 

来自为知笔记(Wiz)

 

转载请注明:大步's Blog » 面试:java Boolean包装类

SiteMap