Integer使用==判断的问题

来源:互联网 发布:modemcu 阿里云搭建 编辑:程序博客网 时间:2024/06/03 18:32

     之前项目中用到Integer使用的==判断,出问题打断点发现问题,查询后发现是缓存的问题,但是没有仔细去想里面的问题,现将其进行了分析。



说明:1、Integer类在初始化时将常用的数字 -128到127直接使用其内部类cache块进行初始化,我们要知道在该范围内的Integer可以使用==进行比较是因为其使用缓存,

引用类型比较是判断内存是否同一地址。

           2、超出该范围内的数进行比较时也使用内存地址进行比较,但是已经不使用缓存,各自使用自己的内存地址,所有不相等。需要使用equals进行判断。

           3、有时候我们需要使用范围内数据,但是又不想使用同一内存地址的应用场景,就需要使用new出另一块内存。