数据类型
int是基本数据类型,Integer是int的包装类,属于引用类型
初始值
int的初始值为0,Integer的初始值为null
存储位置
int是直接存储在栈中的,Integer是引用数据类型,存储在栈中的是它的内存地址,实际的对象存储在堆中
int比较的是两个变量的值是否相等,Integer比较的是内存地址是否相同
传递方式
int在传递参数时都是按值传递,Integer按引用传递,传递的是对象的内存地址
衍生一下:自动装箱/自动拆箱
从Java5开始引入了自动装箱/自动拆箱机制,二者可以相互转换
自动装箱:就是自动将基本数据类型转换为引用类型
自动拆箱:就是自动将引用类型转换为基本数据类型
自动装箱实现原理
当我们给一个Integer对象赋一个int值时,会调用Integer类的valueOf()方法,通过阅读源码,我们可以得到这样的结论:如果整数的值在-128~127之间,就不会new新的Integer对象,而是直接引用常量池中的Integer对象,如果不在这个范围内,则会new新的Integer对象。
注意:除了double和float没有使用缓存,其它6种基本数据类型都使用了缓存策略
自动拆箱实现原理
当我们给一个int变量赋一个Integer对象时,其实调用的时Integer.intValue()方法,这个很简单,直接返回value值。
Original: https://www.cnblogs.com/xilichenbokeyuan/p/14149954.html
Author: 卫盾
Title: 8 int和Integer的区别
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/576029/
转载文章受原作者版权保护。转载请注明原作者出处!