两个Integer值比较不相等问题
2015-08-01 20:23
435 查看
今天写程序碰到一个非常有趣的问题,两个值都为15比较后居然不相等。记录如下:
1.第一种情况:
结果为true;
2.第二种情况:
下面看下面种情况:
结果为false。
2.第三种情况:
结果为false,那这种情况与第一种有什么区别了,唯一的区别就是 129大于15.对于Integer类型来说,值在-128-127,用==比较是一致的,超过这个区间就不行了。那么第二种情况为什么为false了,原来Integer b = 5,在此涉及了装箱过程,即为Integer b = Integer.valueOf(5),所以就不等了。
我们可以看下面中情况:
这种情况为true,就验证了上面的解释。
所以以后比较对象就最好用equals,或者全部使用valueOf();
1.第一种情况:
Integer a = 15; Integer b = 15; System.out.println(a==b);
结果为true;
2.第二种情况:
下面看下面种情况:
Integer a = new Integer(15); Integer b = 5;//这里b=new Integer(15);结果同样为false System.out.println(a==b);
结果为false。
2.第三种情况:
Integer a = 129; Integer b = 129; System.out.println(a == b);
结果为false,那这种情况与第一种有什么区别了,唯一的区别就是 129大于15.对于Integer类型来说,值在-128-127,用==比较是一致的,超过这个区间就不行了。那么第二种情况为什么为false了,原来Integer b = 5,在此涉及了装箱过程,即为Integer b = Integer.valueOf(5),所以就不等了。
我们可以看下面中情况:
Integer a = Integer.valueOf(5); Integer b = 5; System.out.println(a==b);
这种情况为true,就验证了上面的解释。
所以以后比较对象就最好用equals,或者全部使用valueOf();
相关文章推荐
- leetCode 106.Construct Binary Tree from Inorder and Postorder Traversal (根据中序遍历和后序遍历构造二叉树)
- struts原理
- XJOI-NOIP2015提高组模拟题1 day1
- iOS开发-项目 知识分享与经验积累(一)
- Android 中保存数据到文件中
- acm-uva10653解题报告
- IOS中Json解析的四种方法
- cygwin不能执行make
- 设计模式之Factory----经典
- C语言:非减链表的合并
- leetCode 105.Construct Binary Tree from Preorder and Inorder Traversal (根据前序遍历和中序遍历构造二叉树)
- HDU 4366 Successor
- leetcode--Count Complete Tree Nodes
- T语言TC发布脚本方法
- java高级编程-使用反射强制给private字段赋值
- LeetCode#22 Generate Parentheses
- acm-uva11352解题报告
- 【NOIP2007】矩阵取数题解
- Android Retrofit 2.0的基本使用
- Ubuntu下的NDK配置