黑马程序员技术交流社区

标题: int和integer中==和equals的问题 [打印本页]

作者: Seejun    时间: 2015-1-10 22:55
标题: int和integer中==和equals的问题
int a=1;
integer a1=1;//integer a1=new integer("1")
求大神解释下a==a1和a.equals(a1)
作者: jojo    时间: 2015-1-11 00:21
跟String是一样的
作者: lgn187    时间: 2015-1-11 03:41
a只是一个基本数据类型的变量,怎么可能调用equals方法,编译都通不过。
至于说a == a1,是所谓的自动拆箱吧?拆了就是1,这肯定是true。
至于说Integer对象调用的equals方法,看下面:
    public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }
上述代码说白了就是比较两个Integer对象的值value的大小。
所以,你可以认为a1.equals(a)等同于a1 == a,只不过前者是把a变量装箱,后者是a1拆箱。
作者: 常尚全    时间: 2015-1-11 14:56
==比较地址值(完全相等)
equals比较数值(内容相等)





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2