起因

在公司看代码时,看到了使用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?的更多相关文章

  1. Flash+fms视频录制在项目中的实际应用

    Flash+fms视频录制在项目中的实际应用 前言:以下只是记录本人在项目中的应用,而flash+fms视频录制有多种实现方式,具体可根据实际情况而定! 1:古人云:工欲善其事,必先利其器,首先安装f ...

  2. Android项目中,在一个数据库里建立多张表

    一,创建一个公共的DBAdapter; 为了在整个程序运行期间调用该公共的数据库,我们定义了一个扩展自Application的CommDB类: 1,创建唯一的数据库: public class Com ...

  3. spring3.0结合Redis在项目中的运用

    推荐一个程序员的论坛网站:http://ourcoders.com/home/ 以下内容使用到的技术有:Redis缓存.SpringMVC.Maven.项目中使用了redis缓存,目的是在业务场景中, ...

  4. 项目中应用eventbus解决的问题

    在项目开发过程中,往往有些功能表面看起来简单,但实际开发的结果非常复杂,仔细分析下原因发现很多都是因为附加了许多的额外功能. 真的简单吗? 比如我们对一个电商平台的商品数据做修改的功能来讲,其实非常简 ...

  5. 在项目中那个少用if else 语句,精简代码,便于维护的方法(1)

    一般我在写一个函数的时候,可能需要一个回调函数,例如: function loadQtipCode(dom, title, content, width, showcb, hidecb) { $(do ...

  6. JNI_Android项目中调用.so动态库实现详解

    转自:http://www.yxkfw.com/?p=7223 1. 在Eclipse中创建项目:TestJNI 2. 新创建一个class:TestJNI.java package com.wwj. ...

  7. 【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能

    在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能. 项目是用springMVC+spring+hibernate实现 (和这个没有多大关系) 第一步: 首先 ...

  8. Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

    本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这 ...

  9. 转 web项目中的web.xml元素解析

    转 web项目中的web.xml元素解析 发表于1年前(2014-11-26 15:45)   阅读(497) | 评论(0) 16人收藏此文章, 我要收藏 赞0 上海源创会5月15日与你相约[玫瑰里 ...

随机推荐

  1. Angular:自定义属性指令

    ①在命令行窗口下用 CLI 命令ng g directive创建指令类文件 ②将directives/light.directive.ts文件改造一番 import { Directive, Elem ...

  2. 开始学习Django,配置静态登录页面

    开始学习Django,配置静态登录页面 准备阶段 众所周知,Django是一个重量级的设备齐全的web开发框架.在学习Django前我们需要具备如下的知识点: python基础编程 并发 网络编程 H ...

  3. MySQL最经典50道练习题

    表名和字段 学生表 Student(s_id,s_name,s_birth,s_sex):学生编号.学生姓名.出生年月.学生性别. 课程表 Course(c_id,c_name,t_id):课程编号. ...

  4. IOS中将字典转成模型对象

    作为IOS开发初级者今天学习了 如何将plist数据字典转成 数据对象数组中 .有点像C#中解析xml数据 的过程. apps.plist的xml数据是这样的 <?xml version=&qu ...

  5. python 爬虫库安装

    一键安装python爬虫库 pip3 install requests selenium beautifulsoup4 pyquery pymysql pymongo redis flask djan ...

  6. MyBatisPlus-常用注解

    一.@TableName 映射数据库的表名 package com.md.entity; import com.baomidou.mybatisplus.annotation.*; import co ...

  7. Core3.0发布到IIS的流程

    前言 参考链接 https://www.cnblogs.com/wutongjun/p/11981798.html 在IIS上部署 .Net Core 3.0 项目的主要流程有: 安装并启用IIS 安 ...

  8. 官方VisualStudio.gitignore配置

    官方地址 https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 示例 ## Ignore Visual Stud ...

  9. JAVA多线程下高并发的处理经验

    java中的线程:java中,每个线程都有一个调用栈存放在线程栈之中,一个java应用总是从main()函数开始运行,被称为主线程.一旦创建一个新的线程,就会产生一个线程栈.线程总体分为:用户线程和守 ...

  10. web项目报错 无法解析,丢失包 是缺少本地运行jre

    1.通过build path 添加add Library 2.添加jre