Integer 和 int 判断相等
来源:互联网 发布:郑州淘宝诈骗案最新 编辑:程序博客网 时间:2024/05/17 21:55
偶尔看到这样一道题,
public class Test{public static void main(String[] args){Integer i1 = 100;Integer i2 = 100;if(i1 == i2){System.out.println("i1==i2");}else{System.out.println("i1 != i2");}}}public class Test1{public static void main(String[] args){Integer i1 = 200;Integer i2 = 200;if(i1 == i2){System.out.println("i1==i2");}else{System.out.println("i1 != i2");}}}
用两个Integer 对象赋值,第一次赋值 都是100,第二次都是200,猛的一看 ,先不说结果是true或者flase 起码认为这两个结果一样的。
可是最后执行一看,第一个是true第二个是flase。这是为什么呢?换成equels方法,肯定都是true,可是用等号 为什么第一个会是true?百思不得其解。
最后网上查看一下,有人分享出来的源码片段,
public static Integer valueOf(int i) {
if(i >= -128 && i <= IntegerCache.high)
return IntegerCache.cache[i + 128];
else
return new Integer(i);
}
原来i这个方法。方法内不难看出 当赋值为 大于-128 小于127 时候。从这个数组中取出数组中的值,而每次取出的数不超过该范围,就是同一个Integer对象,而超过范围就是new的Integer对象,对象的比较大家都知道是比引用地址是否相同,所以超过范围Integer 每次都是取不同的对象,用==比较会返回false。
0 0
- Integer 和 int 判断相等
- 关于integer和int判断相等
- integer相等判断
- Integer相等判断
- Integer和int类型的判断
- Integer和int类型的判断
- java Integer判断相等==和equals
- Integer间判断值是否相等问题
- 关于两Integer是否相等的判断
- Integer值判断是否相等问题
- 判断Integer值相等用equals
- Integer等包装类判断相等
- int为空判断 -->Integer
- java基础中Integer值用==和equals判断相等问题解析
- int 和 integer
- int 和 Integer 解读
- int 和Integer
- int和integer
- Uncaught SyntaxError: Unexpected end of input 是什么意思
- 输入输出流概念
- 解决程序问题
- c++制作小游戏--雷电
- 让XCode的 Stack Trace信息可读
- Integer 和 int 判断相等
- HTTPS访问中证书的处理
- html5 文件上传预览
- OpenCV鼠标修改图片透明度
- PHP5 扩展SOAP 调用 webservice
- android 单行gridview横向滑动的实现
- apapche在windows2008服务器运行一段时间后服务关闭
- 数字证书原理(转载)
- Android之使用PackageManager取得程序的包名、图标等