java中int和Integer对比的一些坑

--------------------- 
做者:狂飙的yellowcong 
来源:CSDN 
原文:https://blog.csdn.net/yelllowcong/article/details/78434606 
版权声明:本文为博主原创文章,转载请附上博文连接!缓存

--------------------- .net

Integer与int类型的关系

Integer是int的包装类,int的默认值是0,而Integer的默认值是null(jdk1.5的新特性 自动装箱和拆箱,Integer.valueOf() 和xx.intValue() ),对象

须要注意的是Integer里面默认的缓存数字是-128-127,blog

一、Integer与Integer相互比较,数据在-128-127范围内,就会从缓存中拿去数据,比较就相等;若是不在这个范围,就会直接新建立一个Integer对象,使用 == 判断的是两个内存的应用地址,因此天然不相等。内存

二、Integer和int类型相比,在jdk1.5,会自动拆箱,而后比较栈内存中的数据,因此没有不想等的状况

jdk

int跟int比较

int数据类型,都是在栈内存中存储,若是这个数字在栈内存中存在就会直接指向这个内存地址,若是不存在,就会从新开辟内存空间,因此int和int类型的比较,相同的值不会存在内存不等的状况数据类型

八个基本数据类型不能看做对象(这点很特殊),存放在栈中。栈内操做速度快,建立销毁很容易数据

 

 

int跟Integer比较

会自动拆箱,变成int与int对比co

 

Integer跟Integer比较数字

  在-128~127的范围内,==会相等,获取的cache的地址

  不在上述范围内,会去new一个对象对比

  直接new对象的话,确定不等于

相关文章
相关标签/搜索