equals()方法是根类Object中的一个方法,子类可以根据需要重写该方法(比如:String类)。
一、Object类中的equals()方法实现如下:
public boolean equals(Object obj) {
return (this == obj);
}
例子:
package com.mianshi.easy; class A{} public class Equals { public static void main(String[] args) {
A a1 = new A();
A a2 = new A();
A a3 = a2;
System.out.println(a1.equals(a2));
System.out.println(a3.equals(a2));
}
} 结果:
false
true
类A默认继承自Object类,所以具有父类中的public修饰的的equals()方法,并且功能相同。
该方法实现的功能是比较两个对象是否是同一个对象,是同一个对象回true,否则,返回false。equals()比较的是obj存放的对象的地址值,这一点跟“==”一样。
二、String类的中的equals()方法实现如下:
public boolean equals(Object anObject) {
if (this == anObject) { //先比较两个对象是否为同一个对象
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) { //比较两个对象的值是否相同,值相同equals()返回true
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;
}
例子:
package com.mianshi.easy; public class Equals { public static void main(String[] args) {
String a1 = new String("Hello");
String a2 = new String("Hello");
String a3 = "Hello";
//a1和a2明显不是一个对象,但是equals()返回true
System.out.println(a1.equals(a2));
//a1和a3不是同一个对象,equals()返回true
System.out.println(a3.equals(a1));
}
} 结果:
true
true
说明String类里面重写了父类Object类的equals()方法,重写后比较的是两个String对象的内容是否相同,相同则为true。