[color=rgba(0, 0, 0, 0.75)]今天来记录一下,在项目中因为基本类型,所产生的bug。**U•ェ•*U**

包装类:8种基本类型的包装类

应用场景:数据库建立实体映射多用包装类

这两句话是重点:就是建立实体类禁止使用基本数据量类型!!!而用对应的包装类,

为什么呢,看以下场景。

[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<font style="color:rgb(77, 77, 77)"><font face="&quot"><font style="font-size:16px">/**
 * 8中基本类型的对应包装类’
 * byte  short  int  long   double  float  boolean  char
 * Byte Short Integer Long Double  Float  Boolean  Character
 * 区别:(举例int,其余相同)
 * 1、int默认为0,integer默认为null
 * 2、int是java的基本数据类型,integer是int的包装类
 * 3、integer必须new,int直接使用
 */
 
/**
 * 场景一:
 * 创建对应数据库的实体类字段
 * 1、创建一个类型(type),对应数据库的一个字段
 * 2、注意:此存在严重问题,基本类型都默认有值。如int 默认为0
 * 3、那在进行数据库新增的时候,如果不填,则会默认为0。
 * 4、会产生严重的bug,应该改为包装类的引用类型
 */
//错误示范
private int type;//代表类型
//正确,设置为integer类型
private Integer typeT;
</font></font></font>

所以,多用包装类进行赋值。
补充:

[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
<font style="color:rgb(77, 77, 77)"><font face="&quot"><font style="font-size:16px">/**
 * 场景二:
 * 自动装箱And自动拆箱
 */
private void testBox() {
    //原本转换方式
    int t = 10;
    Integer ct = new Integer(t);
    int tt = ct.intValue();
    int i = 10;
    //自动装
    Integer c = i;
    //自动拆
    int ic = c;
}
</font></font></font>

笔试题题如下?为什么一个为true,一个为false???

[HTML] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<font style="color:rgb(77, 77, 77)"><font face="&quot"><font style="font-size:16px">/**
 * 自动装拆箱
 */
public static void main(String[] args) {
    Integer integer0 = 127;
    Integer integer1 = 127;
    System.out.println(integer0 == integer1);//等于true
    Integer integer2 = 128;
    Integer integer3 = 128;
    System.out.println(integer2 == integer3);//等于false
 
    /** 源码
     *    public static Integer valueOf(int i) {
     *             if (i >= Integer.IntegerCache.low && i <= Integer.IntegerCache.high)
     *                 return Integer.IntegerCache.cache[i + (-Integer.IntegerCache.low)];
     *             return new Integer(i);
     *         }
     * 通过上我们发现,如果他的int值在最高和最低之间,他直接返回cache内的数据
     * 否则, new Integer(i);
     * 那么最高值:?=high 127 ,最低值:?=low -128,
     * 所以:在-128至127内,他们引用的是缓存内的数据,地址相同,所以为true。超过此则为false
     *
     *     private static class IntegerCache {
     *         static final int low = -128;
     *         static final int high;
     *         static final Integer cache[];
     *
     *         static {
     *             // high value may be configured by property
     *             int h = 127;
     *             String integerCacheHighPropValue =
     *                 sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
     *             if (integerCacheHighPropValue != null) {
     *                 try {
     *                     int i = parseInt(integerCacheHighPropValue);
     *                     i = Math.max(i, 127);
     *                     // Maximum array size is Integer.MAX_VALUE
     *                     h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
     *                 } catch( NumberFormatException nfe) {
     *                     // If the property cannot be parsed into an int, ignore it.
     *                 }
     *             }
     *             high = h;
     *
     *             cache = new Integer[(high - low) + 1];
     *             int j = low;
     *             for(int k = 0; k < cache.length; k++)
     *                 cache[k] = new Integer(j++);
     *
     *             // range [-128, 127] must be interned (JLS7 5.1.7)
     *             assert IntegerCache.high >= 127;
     *         }
     *
     *         private IntegerCache() {}
     *     }
     *
     */
}</font></font></font>

注解记录完毕,这些在日常开发中还是很需要我们注意的。

Java包装类之实体类不要使用基本类型的更多相关文章

  1. Java中遍历实体类(处理MongoDB)

    在实际过程中,经常要将实体类进行封装,尤其是处理数据库的过程中:因此,对于遍历实体类能够与数据库中的一行数据对应起来. 我是使用的环境是Spring boot,访问的数据库时MongoDB 实体类遍历 ...

  2. java中遍历实体类,获取属性名和属性值

    方式一(实体类): //java中遍历实体类,获取属性名和属性值 public static void testReflect(Object model) throws Exception{ for ...

  3. Java定义bean实体类中的变量时变量名的问题

    首先:TMD,这个问题花了我两个多小时,居然是因为一个字母的大小写导致的,我瞬间就&Y^%^&%&()*%¥%¥¥&^#@%&; 事情是酱紫的: 我定义了一个变 ...

  4. Java中的实体类--Serializable接口、transient 关键字

    在java中,实体类是一个非常重要的概念,我们可以在实体类中封装对象.设置其属性和方法等.关于实体类,也经常涉及到适配器模式.装饰者模式等设计模式.那么在实际代码开发中,关于实体类的注意事项有哪些呢? ...

  5. 领域模型中的实体类分为四种类型:VO、DTO、DO、PO

    http://kb.cnblogs.com/page/522348/ 由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念: 概念: V ...

  6. java利用反射获取类的属性及类型

    java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...

  7. 域模型中的实体类分为四种类型:VO、DTO、DO、PO

    经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析. 得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应 ...

  8. 转:领域模型中的实体类分为四种类型:VO、DTO、DO、PO

    经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析.得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应于 ...

  9. javabean(实体类)转Map类型

    javabean(实体类)转Map类型 从网上"風亦飞"的导出EXCEL的源代码提取出来的.认为非常好用.分享一下给大家,主要看beanToMap方法就OK了 /*以下是从poi导 ...

随机推荐

  1. openlayers的loaders方式加载

    openlayers loaders方式加载 let layerVector = new ol.layer.Vector({ source : new ol.source.Vector({ loade ...

  2. Python笔记_第四篇_高阶编程_再议装饰器和再议内置函数

    1. 概述: 我们在前面用了很多的装饰器这个工具的方法.这个位置要系统的讲一下装饰器. 1.2 为什么需要装饰器. 装饰器本质是一个Python函数,它可以让其他函数在不需要任何代码变动的前提下增加额 ...

  3. thinkcmf面包屑制作

    网站常有的功能面包屑,如图所示: 支持1级分类 list.html 首页 / {$name} article.html 首页 / {$term['name']} / {$post_title} 链接: ...

  4. 64)vertor 简单使用

    1)简单 代码样例:我的理解   vector  其实就是一个简单的数组,然后通过迭代器来进行 遍历数组中的值,而且有自带push_back()来添加元素 #include<iostream&g ...

  5. 17.3.12---sys模块

    1---sys是system的缩写,用来获取操作系统和编译器的一些配置,设置和操作,如判断文件和文件夹是否存在,创建文件夹,获取系统版本之类的操作 import sys  #导入sys模块 2--一些 ...

  6. PAT Basic 1034 有理数四则运算(20) [数学问题-分数的四则运算]

    题目 本题要求编写程序,计算2个有理数的和.差.积.商. 输⼊格式: 输⼊在⼀⾏中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分⼦和分⺟全是整型范围内的整数, ...

  7. Disruptor的简单介绍与应用

    前言 最近工作比较忙,在工作项目中,看了很多人都自己实现了一套数据任务处理机制,个人感觉有点乱,且也方便他人的后续维护,所以想到了一种数据处理模式,即生产者.缓冲队列.消费者的模式来统一大家的实现逻辑 ...

  8. drf框架知识点总复习

    接口 """ 1.什么是接口:url+请求参数+响应数据 | 接口文档 2.接口规范: url:https,api,资源(名词复数), v1,get|post表示操作资源 ...

  9. 将keras的h5模型转换为tensorflow的pb模型

    h5_to_pb.py from keras.models import load_model import tensorflow as tf import os import os.path as ...

  10. js 经纬度计算直线距离

    function getRad(d) { var PI = Math.PI; return d * PI / 180.0; } function getDistance(lat1, lng1, lat ...