1. equals是一个方法,而==是关系运算符
2.“==”
==用于基本数据类型变量时,比较的是存储的值是否相同
==用于引用数据类型变量时,比较的是引用的对象地址是否相同
3.equals方法
(1).equals方法没有被重写时,我们查看Object中的equals方法源码可以看出,equals方法比较的是对象的地址
public boolean equals(Object obj) { //==在比较非基本类型对象时比较的是他们在内存中的地址,地址相同返回true return (this == obj); }
(2).equals方法被重写后,查看源码可以看出,equals方法比较的是对象的内容(以String重写equals方法为例子)
public boolean equals(Object anObject) { if (this == anObject) { return true; } //是否为String类的实例 if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { //将实例转化为数组一一比较 char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; }