- 基本数据类型占用的字节和bit位 以及 可表示的取值范围 内存中缓存的值的范围
- 引用数据类型
基本数据类型:
整型:short、int、long、byte
byte 一个字节 8bit
short 两个字节 16bit
int 四个字节 32bit
long 八个字节 64bit
浮点型:
float 单精度 四个字节 32bit
double 双精度 八个字节 64bit
字符型:
char 两个字节 16bit
布尔型:
引用数据类型:
类、接口类、数组类型、字符串类型、注解类型、枚举类型
话句话说,所有的非基本数据类型都是引用数据类型
基本变量类型:在方法中定义的非全局基本类型变量的具体内容是存储在栈中
String str = "小黄";
引用变量类型:只要是引用数据类型的变量,其具体内容(小黄)都是存放在堆中的,而栈中存放的是其具体内容所在的内存地址(str)
拆箱和装箱:
包装类 装箱操作 基本数据类型 拆箱操作
装箱:
基本数据类型赋值给包装类就是自动装箱操作
将一个原始的数据类型赋值给相应封装类的变量
拆箱:
包装类赋值给基本数据类型就是自动拆箱操作
将一个封装类的变量赋值给相应的原始数据类型的变量
结论:
- 当一个封装类和基本数据类型进行==运算,会将封装类进行拆箱
- 当一个封装类和基本数据类型进行 + - * / 运算,也会将封装类进行拆箱
- 当两个封装类进行==运算,与其它对象进行==运行一样,对比两个对象的地址,也就是判断两个引用是否指向同一个对象
int int1 = 100;
int int2 = 100;
int int3 = 300;
int int4 = 300;
int == int2->true
int3 == int4->false
在IntegerCache中缓存这-128 到 127这256个对象 也就是说int1 和 int2 的对象相同
int3 和 int4 的对象则是不同的
注意:
拆箱时一定注意封装类对象是否为null
网友评论