1、基本类型
Java中有8种基本类型,分为4类,分别为:
整型:包括 byte 、 short、 int 、 long
泛型:float、double
字符型:char
布尔型:boolean
2、基本类型长度及默认值
名称 |
长度(字节) |
默认值 |
取值范围 |
byte |
1 |
0 |
-128~ 127 |
short |
2 |
0 |
-32768 ~ 32767 |
int |
4 |
0 |
-2147483648~2147483647 |
long |
8 |
0 |
-9223372036854774808~9223372036854774807 |
float |
4 |
0.0 |
3.402823e+38~1.401298e-45(e+38 表示乘以10的38次方,而e-45 表示乘以10的负45次方) |
double |
8 |
0.0 |
1.797693e+308~4.9000000e-324 |
char |
2 |
\u000 |
|
boolean |
官方没有明确定义长度 |
flase |
true false |
3、包装类型
基本类型 |
包装类型 |
byte |
Byte |
short |
Short |
int |
Integer |
long |
Long |
float |
Float |
double |
Double |
char |
Character |
boolean |
Boolean |
4、拆箱装箱
拆箱,即,把基包装类型转换为基本类型
装箱,即,基本类型转换为对应的包装类型。
如:Integer no = 1; //自动装箱
Integer no2 = new Integer(2); //装箱
自动装箱的实际操作对应 Integer.valueOf(1);
在java文件生成class文件过程中会自动修改为Integer.valueOf(1),可以通过反编译工具查看。
5、注意事项
1)包装类型的比较不要使用==
如 Integer no1=10;Integer no2 =10; no1==no2;返回结果为true
Integer no1=200;Integer no2 =200; no1==no2;返回结果为false
Byte、Short、Integer、Long、Character的定义中都有一个缓存机制,-128~127对应的对象会缓存到缓存中,调用valueOf()方法时,会先判断数据是否在这个范围内,如果在范围内,返回缓存对象,如果超出范围,新建一个对象返回。
所以在这个范围内的数值,用==比较会返回true。否则会引起一些间歇性的bug,很难定位。
2)java中的基本类型长度不会改变,在c、c++和c#中基本类型的长度会根据编辑器的位数变化,在java中不会变化。
3)boolean官方没有规定长度,实际的占用空间长度和虚拟机有关系。
4)基本类型在虚拟机中是存储在栈中。
更多内容可以关注 公众号 MG驿站