equals()方法和“==”方法的比较
public class TestEquals { //创建一个新类TestEquals
public static void main(String[] args) {
String c1=new String("abc"); //创建四个String对象引用, c1和c2内容相 同,c3和c4内容相同
String c2=new String("abc");
String c3=new String();
String c4=new String();
TestEquals c5=new TestEquals(); //创建两个TestEquals类对象引用,c5和c6内容相同
TestEquals c6=new TestEquals();
System.out.println("c1=c2的运算结果为:"+(c1==c2)); //使用“==”运算符比较c1与c2
System.out.println("c2.equals(c1)的运算结果为:"+(c2.equals(c1))); //使用equals()方法比较c1与c2
System.out.println("c4.equals(c3)的运算结果为:"+(c4.equals(c3))); //使用equals()方法比较c3与c4
System.out.println("c6.equals(c5)的运算结果为:"+(c6.equals(c5))); //使用equals()方法比较c5与c6
}
}
// 运算结果为: c1=c2的运算结果为:false
// c2.equals(c1)的运算结果为:true
// c4.equals(c3)的运算结果为:true
// c6.equals(c5)的运算结果为:false
说明:equals()方法用于比较两个对象引用所指内容是否相等;而“==”运算符用于比较两个对象引用的地址是否相等。对于上面的程序,c1、c2、c3、c4、c5、c6的地址都不相同,所以当用“==”比较c1和c2时,所得结果为false;而用equals()方法比较c1和c2所得结果为true。用equals()方法比较c3和c4所得结果也是true,然而用equals的方法比较c5和c6时得到的结果却为false。这是因为在自定义的类中,equals()方法的默认实现是使用“==”运算符比较两个对象的引用地址,而不是比较对象的内容;而对于c3和c4,因为String类中重写了equals()方法,所以得到的结果是true。