首页  > 世界杯女主持人 > 实体类为什么使用包装类

实体类为什么使用包装类

世界杯女主持人 2025-06-01 04:02:31 5907

以前只是 知其然不知所以然,搞学问搞工作这样肯定是不行的,今天就来扯一下为什么用包装类。

--------------------------------------------------------------------------------------------------------------------------------

基础知识点:

byte,short,int,long 的初始化默认值为 0

float,double 的初始化默认值为 0.0

char 初始化默认值为 " ",空白格,控制台会打印一个特殊符号显示空白格

boolean 初始化默认值是 false

基础知识点:

包装类 的初始默认值为 null

为什么实体类用包装类不用基本数据类型呢,举个例子,实体类用 Integer 不用 int :

- 因为int如果设为空的话默认为0而Integer为Null,Null对于程序来说比较好控制,可以做空值判断以及对数据做统一处理

- Integer 允许为null值,int默认0,数据库里面如果有个字段没有值可能默认值为null,用Integer比较合适。

- int的默认值为0,而Integer默认值为null。

数据库中数据存在为空的情况。

返回数据库字段值是 null 的话,int类型会报错。

int是基本数据类型,其声明的是变量,而null则是对象。

所以用integer。

为了避开基本数据类型的坑,阿里巴巴约定实体类不使用基本数据类型!统一使用包装类!

如上是阿里巴巴的开发手册对实体类的要求!必须用包装类型!

接下来看实例:

--------------------------------------------------------------------------------------------------------------------------------

再补充一下:序列化!

为什么实体类要 implements Serializable 接口

private static final long serialVersionUID = 1L;

为什么要序列化 ?

首先你不序列化就会报错!

序列化:就是把JavaBean对象转成JSON格式的字符串。

反序列化:就是把JSON格式的字符串转化为JavaBean对象。

实现序列化需要和程序打招呼,这个招呼就是一个标记,就是一个空的接口 Serializable 。所以实体类需要 实现 序列化接口,就是和 Java打招呼,给我序列化!

serialVersionUID 序列化ID的作用是:控制程序的版本

什么是版本控制,是不是有点蒙 ?

当我让 serialVersionUID 自动生成的时候,我把我的实体类序列化,得到下面的内容(假设生成的ID是 key1)

{

"name": "yangguo",

"age": 20

}

然后,我反序列化得到杨过这个对象(ID是 key1)

name = "yangguo";

age = 20;

然后过了一年,杨过有了孩子,我增加了杨过这个实体类的字段

name="yangguo";

age=21;

son="yangkang";

然后我去序列化 (ID变成了 key2)

{

"name": "yangguo",

"age": 20,

"son": "yangkang"

}

反序列化 (ID是 key1)

这个时候就会报错,反序列化失败。

设置 private static final long serialVersionUID = 1L; 的好处就出来了,保持 serialVersionUID 的值为1不变,后面如果修改了实体类,依然可以反序列化成功!

----------------------------------------------

以上是个人理解,有不对的地方请加以批评指正,万分感谢!


友情链接:
Copyright © 2015 冲击世界杯_2002韩日世界杯 - 0534pos.com All Rights Reserved.