小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
之前在开发中遇到过的问题:在声明一个实体类时,有的变量用的int有的用的Integer,有的用的long有的用的Long,当时还比较懵这俩都是代表int在使用时有什么差别呢?其实差别就很大了。这只是在开发中遇到的一个很小的问题,就借这个问题来聊一聊包装型和基本类型之间的联系和区别
1.包装类型与基本类型
-
基本数据类型 基本数据包装类型类型主要包含8种:
boolean,byte,char,short,int,long,,float,double -
包装类型(这些基本数据类型对应在java.lang下) 简单类型 | boolean | byte | char | short | Int | long | float | double | | ----- | ------- | ---- | --------- | ----- | ------- | ---- | ----- | ------ | | 二进制位数 | 1 | 8 | 16 | 16 | 32 | 64 | 32 | 64 | | 包装类型 | Boolean | Byte | Character | Short | Integer | Long | Float | Double |
基本数据类型和对应的包装类型是可以相互转换的 就以int和Integer举例:
int转Integer
int a=3;
Integer A = new Integer(a); //通过new创建实例
或
Integer A = Integer.valueOf(a); //通过静态方法valueOf(int)创建
Integer转int
Integer A = Integer.valueOf(5);
int a=A.intValue();
2.自动装箱自动拆箱
一般我们在写代码的过程中并不会像上面那样用int转Integer或者Integer转int 我们一般是 直接赋值 如下: `
Integer A = 18; //自动装箱
int B = A; //自动拆箱
自动装箱:把一个基本类型赋值给引用变量时 系统可以自动将它“包装”为相应的包装类 反之拆箱也是同样的道理
3.区别
我在开发过程中就有遇到过类似情况:当创建一个实体类,假设一个属性是count,若用Integer声明,在存入数据库时 若没有给指定值,则存入数据库将会存放null,若用int声明,在存入数据库时,没有给指定值则会存入0。这也就说明 具体要声明为int还是Integer需要看具体的实际情况,若需要取出这个值进行判断时,这是否需要判断为null也是可以考虑的(这说明包装类型和基本类型初始值是不同的) 当然区别还有很多,我这里只是分享他们俩初始值的不同,还有其他区别可以搜索了解