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拆箱。 |