首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Integer“==”跟Integer“equals”

2012-10-16 
Integer“”和Integer“equals”以前有碰到Integer“”和Integer“equals”的问题,但是都没有总结,有时开发时

Integer“==”和Integer“equals”

以前有碰到Integer“==”和Integer“equals”的问题,但是都没有总结,有时开发时也忘记注意了

?

最近有碰到这个问题了,发现是一个容易忽略的注意点,所以稍微整理了一下

?

看下面这段代码:

?

?

先来分析下这段代码的对象创建过程:

?

Integer i1 = 2;??? ??? 这条语句创建了一个整型对象
Integer i2 = Integer.valueOf(2);??? ??? 这条语句不创建新的对象,i2和i1引用同一个对象
Integer i3 = Integer.valueOf(2);??? ??? 这条语句不创建新的对象,i3和i1引用同一个对象
Integer i4 = Integer.valueOf("2");??? ??? 这条语句创建了一个整型对象
Integer i5 = Integer.valueOf("2");??? ??? 这条语句创建了一个整型对象

?

根据对象的创建过程,很明了,程序运行结果为:

?

test ==i1 == i2 ? truei1 == i4 ? falsei2 == i3 ? truei2 == i4 ? falsei4 == i5 ? falsetest equalsi1.equals(i2) ? truei1.equals(i4) ? truei2.equals(i3) ? truei2.equals(i4) ? truei4.equals(i5) ? true

?

感觉很简单,但实际的开发过程中,如果不注意,判断两个Integer相等就直接用“==”,但是在如今这个开源框架的天下,对象的创建很多时候并不是我们想的那样,所以类似Integer这种基础数据类型的相等,也应该跟String判断相等一样,用equals

?

热点排行