两个Integer 用== 比较不相等的原因
来源:互联网 发布:手写电子笔记软件 编辑:程序博客网 时间:2024/05/29 09:08
Integer a1 = 127;Integer b1 = 127;if(a1==b1){ System.out.println("相等");}else{ System.out.println("不等");} Integer a = 128;Integer b = 128;if(a==b){ System.out.println("相等");}else{ System.out.println("不等");}
运行结果是:
相等
不等
测试了下,两个Integer大于或等于128时是不等的。
JVM会自动维护八种基本类型的常量池,int常量池中初始化-128~127的范围,所以当为Integer i=127时,在自动装箱过程中是取自常量池中的数值,而当Integer i=128时,128不在常量池范围内,所以在自动装箱过程中需new 128,所以地址不一样。
对于Integer来说,你用==比较的是对象引用地址,而不是Integer的值。Integer你要把当当成一个对象来看待
要比较两个Integer类型的大小可以调用它的intValue方法 Long 对应的是longValue,这个其实在api就是调用强转的方法
所有的相同类型的包装类对象之间值的比较,全部使用equals方法比较。
0 0
- 两个Integer 用== 比较不相等的原因
- 两个Integer 用== 比较不相等的原因
- 两个Integer值比较不相等问题
- 判断两个字符串不相等,不要用!=
- 两个int型的值比较,竟然不相等?
- 两个Integer ==和!=的比较,为什么失效?
- 两个值相同的Integer类型用!=比较出错的问题
- 两个值相同的Integer类型用!=比较出错的问题
- 两个Integer的值比较
- Integer的 == 比较
- 关于Calendar类的compareTo方法比较两个时间不相等的问题
- 比较两个Integer对象的小知识点
- 两个Integer对象值的比较
- 比较两个Integer的值是否相等
- 两个List集合中不相等的值
- 两个Integer对象比较
- integer ==比较
- 明明两个数据看的一样,但比较的结果就是不相等 (内存对齐,debug没问题,release 有问题)
- 简单4步,配置NGNIX,让新的域名指向主机的虚拟目录
- Git快速入门知识
- Ubuntu虚拟机多网卡配置
- VC++学习笔记5
- 窗口泄露问题
- 两个Integer 用== 比较不相等的原因
- 历史数据迁移 使用触发器 trigger 示例
- 递归小李子
- 快速读入
- 第7章 sed、gawk介绍与正则表达式-----------(gawk编辑器简单使用)
- 动态加载页面-使用jquery ajax
- mysql 的一个死锁问题
- Arcsde报ora-29861: 域索引标记为loading/failed/unusable错误
- cookie,session机制