Java的Integer类型使用==与equals
来源:互联网 发布:php 环境 编辑:程序博客网 时间:2024/06/06 19:59
或许有不少Java程序猿在写Integer比较的时候出现过一种情况,均为Integer类型的相同值比较,却不是我们想要的结果!刚好在今天在开发中赶进度,也犯了这么一个错,所以来整理分享一下!
刚好今天有这么一个比较:
device.getIdevicetypeid != dbDevice.getIdevicetypeid()
在测试的时候就一直有问题,逼得我来个debug,一只跟踪到这里发现原本类型一致、值也一致的两个属性值比较时,却永远是true,很是诧异,仔细看看才发现"!="这个比较!
在这个时候,作为一个有了几年开发经验的来说,马上会想到几种解决方案!先例举两种:
1、不改比较方式,还是使用"!=",但是将
device.getIdevicetypeid().intValue != dbDevice.getIdevicetypeid().intValue()
这样就会得到你想要的答案
2、改变比较方式,使用"equals()",代码如下:
!device.getIdevicetypeid().equals(dbDevice.getIdevicetypeid())
这种比较方式一样能比较出来!以上两种比较方式要注意java.lang.NullPointerException异常,至于怎么处理这个异常,我就不多说了!
说说为什么吧,Integer不属于基本数据类型,使用==只能比较值相等,而Integer为对象所以使用==比较时就会出现问题,只要使用equals比较就不会有这种问题出现。再说说为什么用上面的两种方式就能比较出来呢,有使用jdk API习惯的程序猿,会发现Integer对象的intValue()会把Integer对象的值转换为int的基本数据类型值,这样使用==比较就是正常的!而用equals比较在底层的逻辑也就是将它用intValue()转换了!
内容很简单,知识很基础!
1 0
- Java的Integer类型使用==与equals
- Integer下的==与equals
- Integer类==与equals区别与使用
- Integer类==与equals区别与使用
- java equals与== 的使用
- Java Integer的==和.equals()之间的区别
- String 和Integer中 == 和 equals的使用
- Java中int,Integer,equals,==的区别
- Java Integer 128 == equals 128 ?
- Java中equals与"=="的使用区别
- 对于Integer类型数据==和equals()问题
- Integer String 的equals == 区别
- Integer == 和equals的区别
- Integer类型与int类型的==比较
- 有趣的Java之包装类型的缓存与"==" equals
- Java和C#下String类型中的==和equals的原理与区别
- Java Integer为什么要使用equals而不会==比较
- 【Java基础】equals和==的区别以及Integer(-128~127)值的==和equals比较
- oracle pga sga
- .tar.bz2文件解压命令
- C++抽象机制 :对象,析构函数,默认构造函数
- 各类排序算法时间复杂度和空间度对比
- 关注个人开发者微信公众账号vjiazhi,改变观点,改变命运!
- Java的Integer类型使用==与equals
- C# md5 hash值求取 添加 system.web的引用
- SQL 视图
- ssi 开发oa邮件模块,怎么能将exchange 2010融合到一起?
- SQL语句删除和添加外键、主键
- String比较排序
- Json_encode过的字段值在mysql中模糊查询不出来的原因及解决办法
- PHP的启动与终止
- C#简单介绍 + helloworld