java两Integer类型用==比较的问题
2016-11-30 00:00
453 查看
![](https://static.oschina.net/uploads/space/2016/1130/165930_hf48_2555747.gif)
编译后其实是这样
Integer i = Integer.valueOf(129);
Integer j = Integer.valueOf(129);
jdk源码,方法如下。
public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
默认的话他会缓存 -128到127之间的整数,其余的他会new。new的话两个对象的地址肯定是不一样的,也就是不相等了
相关文章推荐
- Java自动装箱解箱问题&&int和Integer类型==比较问题
- JAVA中Integer类型变量比较问题
- java中的String 类型易错点总结(相等比较和传值问题)
- java Integer 比较的问题
- 关于java中double类型的比较大小的问题
- java Integer和int之间==的比较问题
- java Integer和int之间==的比较问题 equal
- Java常用类型(Integer,BigDecimal)定义、转换及比较
- 今天遇到关于JAVA INTEGER类型的问题 不过还好 现在解决了,
- java中Integer比较需要注意的问题
- 1.00 【基础知识之基础类型】 JAVA中Long与Integer比较容易犯的错误
- java Integer类型值比较
- Java的String.valueOf 转换 与、空串+类型变量转换与封装类(Integer)的toString方式转换比较
- Java中Integer与int类型的比较--装箱和拆箱
- Integer 类型的比较问题
- java Integer和int之间==的比较问题。求解释
- Java中HashMap、HashSet中Object类型对象比较问题
- 两个值相同的Integer类型用!=比较出错的问题
- 两个值相同的Integer类型用!=比较出错的问题
- Integer类型用 “==” 比较的问题