至今,小菜用java快两年了,有些事,也该有个总结。

基本类型和包装类型的概念在本文不作赘述。

如果这两种类型直接使用,倒没什么值得讨论的,无非就是自动装箱拆箱,java可以让你感觉不到他们的存在,但如果我们在数据库映射实体(下文简称bo,即business object)中使用,就得注意了!

比如有一个评定表,里边有个评分字段,在写bo时,定义评分属性,是用int还是Integer呢?

假如用Integer,在做数据插入时,先实例化一个bo,此时bo中的Integer类型字段,默认是null值,如果我们一不留神忘了给它一个初始值0,那么插入到数据库中的值也是null,再查询出来,当然也是null。

试想,作为评分而言,下限也就是0分,怎么可能是null?于情说不通;读者平时可能不太注意,以下代码会抛出空指针异常:

1 Integer i = null;2

3 if(i == 0){4

5 }

为啥?因为java会对i进行自动拆箱,null怎么拆,当然会空指针了,于理说不通。

既然于情于理都不通,看来我们只能用基本类型int,而int恰好解决了上述问题,因为int是基本类型,天生就有初始值0。

有些时候,我们会直接把bo放在controller层,用来封装参数,客户端提交的参数,直接用一个bo来接受,就不用反复定义一堆变量,而且方便插入到数据库。

那么问题来了,如果我们的bo中是用基本类型int定义的属性,那么天生就会有默认值0,就算客户端不提交这个参数,也会有值,这样就无法区分值0是客户端提交的,还是默认的。

小菜以为,解决这个问题也不难,最简单的方法就是把0看作非法值,或者空值。如果检查到某个值为0,就认为没有提交该参数,或者提交的参数非法。

当然,不能一概而论,一棒子打死所有的0。在经典的设计中,有个概念叫软删除,就是加个字段(比如:status)标记一下,0表示该条记录正常,1表示已删除。这里依然可以用0,因为这是对内的参数,作为系统内部运作使用,不涉及与客户的交互。

java包装经验_java中基本类型和包装类型实践经验相关推荐

  1. java 基本类型 包装类型_Java中基本类型和包装类

    基本类型运算 boolean类型数据可以进行逻辑运算(&&,||,!),其他的基本类型都可以进行数值计算(+,-,*,/).逻辑运算比较简单易懂,完全与逻辑数学的规则一致,而数值运算涉 ...

  2. 【Java】浅析八种基本类型和包装类型

    Java八种基本类型 <Java八种基本类型分析> Java基本类型对应的包装类 Everything is object Java编程语言不把基本数据类型看作对象.Java 编程语言提供 ...

  3. java 内部变量_java 中的内置数据类型

    1,  基本数据类型 Java是强类型语言, 对于每一种数据都定义了类型,基本数据类型分为数值型,字符型,布尔型.数值型又分为了整型和浮点型. 整型又分为byte, int, short long. ...

  4. java collectiongroup 类_Java中的collection集合类型总结

    java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.java集合工具包位置是java.util.* java集合主要可以划分为4个部分:list列表.set集 ...

  5. java 为什么包装类_Java中为什么需要基本类型包装类?

    Java是一种面向对象语言,在它的世界里,万物皆对象. java中的八种基本数据类型,​以int为例,你可以用 int i = 4:直接赋值,把 i 当作一个普通变量操作,可以加减乘除等等,但是想要向 ...

  6. java的包装类型是什么用_Java基本类型和包装类型的区别

    包装类型可以为 null,而基本类型不可以 别小看这一点区别,它使得包装类型可以应用于 POJO 中,而基本类型则不行. POJO 是什么呢?这里稍微说明一下. POJO 的英文全称是 Plain O ...

  7. Java基本类型和包装类型总结

    1.Java的基本类型及其对应的包装器类 Java有8种基本类型:大致分为3类:字符,布尔,数值类型(在java中数值是不存在无符号的,这一点不像C/C++,他们的取值范围是固定的,不会随着机器硬件的 ...

  8. java基本类型和包装类型

    java是面向对象的语言为什么还要有基本类型,只有包装类型完全面向对象不行吗? java语言可以只有基本类型吗,为什么还有要包装类型? java中的基本类型和包装类型:   基本类型     包装器类 ...

  9. 基本类型和包装类型的区别详解

    六年前,我从苏州回到洛阳,抱着一幅"海归"的心态,投了不少简历,也"约谈"了不少面试官,但仅有两三个令我感到满意.其中有一位叫老马,至今还活在我的手机通讯录里. ...

  10. CSDN日报190929:面试官:兄弟,说说基本类型和包装类型的区别吧

    CSDN日报来啦!给大家奉上当日最新鲜的技术干货! 深度学习|[深度学习] 自然语言处理-Attention 作者:小墨鱼~~ 要了解深度学习中的注意力模型,就不得不先谈Encoder-Decoder ...

最新文章

  1. 【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第2节②...
  2. Alibaba Dubbo框架同步调用原理分析-1
  3. 【Python-ML】SKlearn库特征抽取-LDA
  4. 数据结构与算法笔记(二)—— 顺序表
  5. 干掉了竞争对手的餐饮夫妻店,在等待自己的死亡
  6. 【python网络编程】创建TCP/UDP服务器进行客户端/服务器间通信
  7. Java技术分享:Java基本数据类型
  8. shell swt 样式_swt shell设置窗口位于屏幕中间
  9. nginx和tomcat整合
  10. 如何在Node.js上的Express.js中获取GET(查询字符串)变量?
  11. 关于 free 命令显示内存使用情况问题
  12. python线程和c++线程的区别_python 多线程和C++多线程的区别
  13. SQL语句的优化建议
  14. 微波工程学习心得(一)D.M.Pozar版
  15. RTL8211E网口芯片在Uboot下调试问题
  16. java itex 打印pdf_Java使用iTextPDF生成PDF文件的实现方法
  17. http://www.2cto.com/ 红黑联盟
  18. JS数组常用方法整理(14种常用方法)
  19. Kubernetes 深入理解 Pod
  20. MySQL基本操作——1

热门文章

  1. java scanner构造函数_Point类的构造函数(JAVA)
  2. 力扣-61 旋转链表
  3. (BUG记录)使用迭代器安全的删除处于循环下集合中的元素
  4. 织梦自定义表单限制IP24小时只能提交一次方法
  5. NYOJ 题目94 cigarettes
  6. [译]IIS 8.0应用初始化
  7. SPOJ QTREE4 lct
  8. HCIE-RS面试---交换机原理
  9. android图片选择库selectp,浅谈android的selector背景选择器
  10. activate激活虚拟环境无效解决办法