一.java基本数据类型
数据类型 | 大小/位 | 包装类 | 默认值 | 范围 |
---|---|---|---|---|
byte(位) | 8 | Byte | 0 | -128~127 |
short(短整数) | 16 | Short | 0 | -32768~32767 |
int(整数) | 32 | Integer | 0 | |
long(长整数) | 64 | Long | 0 | |
float(单精度) | 32 | Float | 0.0 | |
double(双精度) | 64 | Double | 0.0 | |
char(字符) | 16 | Char | 空 | 0~65535 |
boolean | 8 | Boolean | false | true或false |
二.基本数据类型的使用场景
1.byte:用于在大型数组中节约空间,用来代替整型,因为byte类型只占8位,占int类型的4分之1;
2.short:像byte类型一样节约空间,当大型数组中的元素值大小超过了byte类型却小于int类型,则用short类型存储,short类型占用的空间只有int类型的二分之一;
3.int:一般整型变量默认为int型;
4.long:用于存储数值超过int类型范围的值;
5.float:用于存储大型浮点数组的时候可节省内存空间;
6.double:浮点数默认类型为double类型;
7.char:char数据类型可以存储任何字符;
8.boolean:作为一种标志来记录 true/false 情况;
注意:①float和double类型不能用来表示精确的值,如货币;②为long类型的变量赋值时要在值后面加上'L',为float类型的变量赋值时要在值后面加上'f'。
三.基本数据类型和包装类的区别
1.包装类是对象,拥有方法和字段,对象的调用都是通过引用对象的地址;基本类型不是;
2.包装类型是引用的传递,基本类型是值的传递;
3.声明方式不同:基本数据类型不需要new关键字;包装类需要new在堆内存中分配内存空间;
4.存储位置不同:基本数据类型直接将值保存在值栈中;包装类型是把对象放在堆中,然后通过对象的引用来调用他们;
5.初始值不同:基本数据类型int的初始值0,boolean的初始值是false;包装类型的初始值为null;
6.使用方式不同:基本数据类型直接赋值使用就好;包装类型是在集合如collectionMap时使用;
四.类型转换
1.转换规则
(1)不能对boolean数据类型进行转换;
(2)不能把对象类型转为不相关类对象;
(3)容量大的数据类型转换为容量小的数据类型时,必须用强制类型转换;
(4)转换过程中,可能会导致内存溢出或者损失精度;
(5)浮点数到整数的转换是舍去小数位,并不是四舍五入;
2.自动类型转换:需要满足的条件:转换前的类型所占的位数小于转换后的类型所占的位数,例如:short类型占16位,就可以自动转换成32为的int型。
3.强制类型转换:需要满足的条件:①转换的数据类型必须是兼容的;②格式:(type)value,type是要强制类型转换后的数据类型。
4.隐含类型转换:
①整数的默认类型是int型;
②浮点数默认是double型,但是定义并初始化float类型变量的时候,值后面必须跟上F或者f。
五.拆箱和装箱
在JavaSE5之前,如果要生成数值为10的Integer对象,需要这么做:
Integer integer = new Integer(10);
而在JavaSE5之后,提供了自动装箱的功能,如果要生成数值为10的Integer对象,只需要这么做:
Integer integer = 10;
这样写会触发自动装箱,直接根据数值创建integer对象,而不用new操作。那么,拆箱是什么样的呢?像下面就是:
Integer integer = 10;//装箱
int i = integer;//拆箱
简而言之,装箱就是基本数据类型转换为包装类型,拆箱就是包装类型转换为基本数据类型。
参考:
Java中基本数据类型和包装类型的区别:https://blog.csdn.net/qq_34820803/article/details/87938182
JAVA基本数据类型及其对应的包装类:https://blog.csdn.net/yangyechi/article/details/82530447