包装类型VS基本类型

779 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

之前在开发中遇到过的问题:在声明一个实体类时,有的变量用的int有的用的Integer,有的用的long有的用的Long,当时还比较懵这俩都是代表int在使用时有什么差别呢?其实差别就很大了。这只是在开发中遇到的一个很小的问题,就借这个问题来聊一聊包装型和基本类型之间的联系和区别

1.包装类型与基本类型

  • 基本数据类型 基本数据包装类型类型主要包含8种:booleanbytecharshortintlong,,floatdouble

  • 包装类型(这些基本数据类型对应在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也是可以考虑的(这说明包装类型和基本类型初始值是不同的) 当然区别还有很多,我这里只是分享他们俩初始值的不同,还有其他区别可以搜索了解