使用==对比的时候要注意,区分是int、Integer、new Integer。
若是和int对比,不管是常量池还是堆的都会拆分成int,得到为true。
若是和Integer对比,则要注意是否在缓存的范围之内即可。
在java7之后,调用string.intern会判断字符串对象是否存在于缓存池,如果存在直接返回缓存池结果, 如果不存在,则会将当前堆中对象的引用存放在缓存池中,在返回其引用地址。
使用==对比的时候要注意,区分是int、Integer、new Integer。
若是和int对比,不管是常量池还是堆的都会拆分成int,得到为true。
若是和Integer对比,则要注意是否在缓存的范围之内即可。
在java7之后,调用string.intern会判断字符串对象是否存在于缓存池,如果存在直接返回缓存池结果, 如果不存在,则会将当前堆中对象的引用存放在缓存池中,在返回其引用地址。