一.基本使用对比
int | Integer |
基本数据类型 | 包装类 |
速度快 | 速度慢 |
栈中 | 堆中 |
初始值 = 0 | 初始值 = null |
二.深入对比
1.new Integer生成的是两个对象,内存地址不同.
2.包装类Integer和基本数据类型int比较时,java会自动包装为int
3.非new生成的integer变量指向的是静态常量池中的cache数组中存储的指向Integer对象;
而new integer生成的变量指向堆中,两者在内存中的对象引用地址不同。
4.Integer的值会进行缓存[-128到127]之外的数,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个Integer对象。
三.自动装箱和自动拆箱
1.自动装箱:将基本类型数据重新转化为对象 Integer num = 9;
2.自动拆箱:将对象重新转化为基本类型 int num1 = num。