在项目中应该使用Boolean还是使用boolean?
起因
在公司看代码时,看到了使用Boolean对象来完成业务逻辑判断的操作。和我的习惯不一致,于是引起了一些反思。
boolean和Boolean的差别咱就不说了,我们仅探讨使用boolean与Boolean的场景。
样例 1 没必要的拆装箱
Boolean isSingle = true;
boolean isMarried = Boolean.FALSE;
这是应该极力避免的,无谓的拆装箱操作会有一定性能的影响。
样例 2 业务中常见的使用方式
Boolean isSingle = Boolean.FALSE;
// 一些其他操作,可能改变isSingle的值
if (!isSingle && otherBoolean) {
// 一些操作
} else {
// 一些操作
}
我会觉得这里使用boolean会更好,甚至找不到使用Boolean对象的理由。
而使用boolean有更多的好处,比如:
- 更少的内存占用,基本类型和包装类的差距。即便我们不知道在当前JVM下,boolean具体占几个字节。Boolean还是比boolean大得多
- 如果是以上代码,你甚至不用去初始化。基本类型的好处:有默认值。这也变相意味着不会发生NPE。
- 少敲几次键盘
那什么时候需要使用Boolean类型?
翻了Boolean类型的源码,并看了看具体的几个方法。我觉得比较实用的还是toString和两个valueOf。
Boolean非常适用于与String相互转换的场景使用。
如我们对接一个三方接口,其传的是字符串true
,false
。我们则可以使用Boolean.valueOf(target)
来转换成Boolean对象。
实体类中应该使用Boolean还是boolean
这一条大家应该都觉得使用Boolean比较好,但我在使用JPA的过程中还是觉得使用boolean更有优势。
如private boolean isDeleted
,我就不需要去管他了。
原因还是以上那些。
个人浅见,欢迎探讨交流。