Java基本数据类型
八种基本数据类型
- 字符型:char
- 布尔型:boolean
- 数值型
- 整数型:byte,short,int,long
- 浮点型:float,double
整数型取值范围
- byte:byte用1个字节来存储,范围为-128(-2^7)(10000000)到127(2^7-1)(01111111),在变量初始化的时候,byte类型的默认值为0
- short:short用2个字节存储,范围为-32,768 (-2^15)到32,767 (2^15-1),在变量初始化的时候,short类型的默认值为0
- int:int用4个字节存储,范围为-2,147,483,648 (-2^31)到2,147,483,647 (2^31-1),在变量初始化的时候,int类型的默认值为0
- long:long用8个字节存储,范围为-9,223,372,036,854,775,808 (-2^63)到9,223,372,036, 854,775,807 (2^63-1),在变量初始化的时候,long类型的默认值为0L或0l,也可直接写为0
浮点型
位(bit)是衡量浮点数所需存储空间的单位,通常为32位或64位,分别被叫作单精度和双精度。
包装类型
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。
| 基本数据类型 | 包装类 |
|---|---|
| byte | Byte |
| boolean | Boolean |
| short | Short |
| char | Character |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
装箱与拆箱
我们认为包装类是对基本类型的包装,所以,把基本数据类型转换成包装类的过程就是打包装,英文对应于boxing,中文翻译为装箱。
反之,把包装类转换成基本数据类型的过程就是拆包装,英文对应于unboxing,中文翻译为拆箱。
自动装箱与拆箱
Integer i =10; //自动装箱 int b= i; //自动拆箱
自动装箱: 就是将基本数据类型自动转换成对应的包装类。
自动拆箱:就是将包装类自动转换成对应的基本数据类型。
自动装箱都是通过包装类的valueOf()方法来实现的.自动拆箱都是通过包装类对象的xxxValue()来实现的。
用到自动装箱的场景
- 将基本数据类型放入集合类
- 包装类型与基本数据类型进行大小比较
- 包装类型的运算
- 三目运算符。三目运算符的语法规范。当第二,第三位操作数为基本类型和对象时,其中的对象就会拆箱为基本类型进行操作。
- 函数参数与返回值
自动拆装箱与缓存
Integer的操作上引入了一个新功能来节省内存和提高性能。整型对象通过使用相同的对象引用实现了缓存和重用。适用于
- 适用于整数值区间-128 至 +127。
- 只适用于自动装箱。使用构造函数创建对象不适用。
自动拆装箱的问题
- 包装对象的数值比较,不能简单的使用
==,虽然-128到127之间的数字可以,但是这个范围之外还是需要使用equals比较。 - 前面提到,有些场景会进行自动拆装箱,同时也说过,由于自动拆箱,如果包装类对象为null,那么自动拆箱时就有可能抛出NPE。
- 如果一个for循环中有大量拆装箱操作,会浪费很多资源。

浙公网安备 33010602011771号