/*
Object是所有类的父类:
它有一个equals方法,这个方法是用来比较两个对象的引用是否相同,而不是比较对象内容是否相同。
"=="比较的是两个对象的引用,Object中的equals方法比较的也是两个对象的引用。所以在Object类中==和equals的作用是一样的。
所以在子类中一般会重写覆盖此equals方法,使得equals方法实现比较对象内容是否相同的功能。这时==和equals的功能就不一样了。
==还适用于比较对象引用,而equals是用于比较对象(具体来说是对象内容)
新定义类的对象一般要重写equals方法。
*/
class Demo
{
private String name;
Demo(String name)
{
this.name=name;
}
public boolean equals(Object obj) //重写equals方法。
{
if(obj==null)
return false;
if(obj instanceof Demo)
{
Demo d=(Demo)obj;
return this.name.equals(d.name);
}
return false;
}
}
class EqualsTest
{
public static void main(String[] args)
{
Demo d1=new Demo("Hello");
Demo d2=new Demo("Hello");
sop(d1==d2);
sop(d1.equals(d2));
String str1="Hello";
String str2="Hello";
String str3=new String("Hello");
String str4=new String("Hello");
sop(str1==str2);
sop(str1.equals(str2));
sop(str3==str4);//比较两个对象引用肯定是不一样的。
sop(str3.equals(str4));//在String类中重写了Equals方法,比较的是引用指向的对象内容。
sop(str1==str3);
sop(str1.equals(str3));
//System.out.println("Hello World!");
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}