【java 面试题之1+1在什么情况下不等于2 ?】
故事的起源:网上看到一个笑话: 1+1在什么情况下不等于2 ? 最简单的答案是1+1 在算错的情况下,不等于2 ,其实1+1在算对的情况下也未必等于2
原因解释:
在 Java 5 中,为 Integer 的操作引入了一个新的特性,用来节省内存和提高性能。
整型对象在内部实现中通过使用相同的对象引用实现了缓存和重用。
上面的规则适用于整数区间 -128 到 +127。
这种 Integer 缓存策略仅在自动装箱(autoboxing)时候有用,使用构造器创建的 Integer 对象不能被缓存。
Javadoc 详细的说明这个类是用来实现缓存支持,并支持 -128 到 127 之间的自动装箱过程。
最大值 127 可以通过 JVM 的启动参数 -XX:AutoBoxCacheMax=size 修改。
1+1在算对的情况下也未必等于2
1群羊 + 1群羊 = 多少只羊
1双鞋子 + 1双鞋子 = 多少双鞋子
1+1 =11
单位不同时.如1小时加1分等于61分