在项目中应该使用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,我就不需要去管他了。
原因还是以上那些。
个人浅见,欢迎探讨交流。
在项目中应该使用Boolean还是使用boolean?的更多相关文章
- Flash+fms视频录制在项目中的实际应用
Flash+fms视频录制在项目中的实际应用 前言:以下只是记录本人在项目中的应用,而flash+fms视频录制有多种实现方式,具体可根据实际情况而定! 1:古人云:工欲善其事,必先利其器,首先安装f ...
- Android项目中,在一个数据库里建立多张表
一,创建一个公共的DBAdapter; 为了在整个程序运行期间调用该公共的数据库,我们定义了一个扩展自Application的CommDB类: 1,创建唯一的数据库: public class Com ...
- spring3.0结合Redis在项目中的运用
推荐一个程序员的论坛网站:http://ourcoders.com/home/ 以下内容使用到的技术有:Redis缓存.SpringMVC.Maven.项目中使用了redis缓存,目的是在业务场景中, ...
- 项目中应用eventbus解决的问题
在项目开发过程中,往往有些功能表面看起来简单,但实际开发的结果非常复杂,仔细分析下原因发现很多都是因为附加了许多的额外功能. 真的简单吗? 比如我们对一个电商平台的商品数据做修改的功能来讲,其实非常简 ...
- 在项目中那个少用if else 语句,精简代码,便于维护的方法(1)
一般我在写一个函数的时候,可能需要一个回调函数,例如: function loadQtipCode(dom, title, content, width, showcb, hidecb) { $(do ...
- JNI_Android项目中调用.so动态库实现详解
转自:http://www.yxkfw.com/?p=7223 1. 在Eclipse中创建项目:TestJNI 2. 新创建一个class:TestJNI.java package com.wwj. ...
- 【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能
在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能. 项目是用springMVC+spring+hibernate实现 (和这个没有多大关系) 第一步: 首先 ...
- Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问
本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这 ...
- 转 web项目中的web.xml元素解析
转 web项目中的web.xml元素解析 发表于1年前(2014-11-26 15:45) 阅读(497) | 评论(0) 16人收藏此文章, 我要收藏 赞0 上海源创会5月15日与你相约[玫瑰里 ...
随机推荐
- 如何更简单的使用Polly
Polly 弹性瞬时错误处理库 Polly是一个C#实现的弹性瞬时错误处理库 它可以帮助我们做一些容错模式处理,比如: 超时与重试(Timeout and Retry) 熔断器(Circuit Bre ...
- 求求你,别再用wait和notify了!
Condition 是 JDK 1.5 中提供的用来替代 wait 和 notify 的线程通讯方法,那么一定会有人问:为什么不能用 wait 和 notify 了? 哥们我用的好好的.老弟别着急,听 ...
- jenkins配置--上传代码,定时执行用例,发送测试报告
1.安装条件:jdk1.8以上的,百度jenkin进入官网--download ,根据需要的版本下载 2.jenkins概念:持续集成,jenkins开源属于插件式形式进行管理的,选择性的装插件,支持 ...
- double类型和int类型的区别
引例: double a=19*3.3; System.out.print(a); 结果为62.9999996,不是62.7:这里不单纯是因为给的是double类型 (1) 62.7 和 62.699 ...
- js上 八.语句
1.什么是语句 概念:在JavaScript中表达式是短语,语句就是整句或命令. 作用:用来执行以使某件事发生 特征:用 ; 结尾 Js中语句的常见形式: ü 表达式语句 ü 复合语句 ü 声明语句 ...
- create-react-app 基于ts项目,使用react-router-dom搭建项目
准备工作 来个react项目 create-react-app 基于TS的项目 ts项目安装后 删除node_modules,重新 yarn install, 不然jsx会报错 安装React-rou ...
- css3选择器归类整理---基本选择器和属性选择器
css3选择器分类 CSS3选择器分类如下图所示 选择器的语法 1.基本选择器 类型 代码 功能描述 通配选择器 *{ margin: 0; padding: 0; border: none; } 选 ...
- Unity 2017 Scene界面与Game界面显示不同/过于灰暗的解决办法
场景界面的显示过于灰暗,严重影响工作心情. 切换到游戏界面时的颜色. 只要将场景中全部摄像机的[Allow HDR]取消勾选即可.
- C# 编译机器码过程原理之再谈反射
一.引言 我们知道在Java中有虚拟机,代码运行时虚拟机把Java语言编译成与机器无关的字节码,然后再把字节码编译成机器指令执行,那么在.NET中程序是如何运行的呢? 其实运行原理是一样的,.NET中 ...
- 【基础】Linux系统的运行级别
1.系统运行级别的配置文件 什么是运行级呢?简单的说,运行级就是操作系统当前正在运行的功能级别. 它让一些程序在一个级别启动,而另外一个级别的时候不启动. Linux系统的有效登录模式有0~9共十种, ...