A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Seejun 中级黑马   /  2015-1-10 22:55  /  1123 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int a=1;
integer a1=1;//integer a1=new integer("1")
求大神解释下a==a1和a.equals(a1)

3 个回复

正序浏览
==比较地址值(完全相等)
equals比较数值(内容相等)
回复 使用道具 举报
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拆箱。
回复 使用道具 举报
跟String是一样的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马