/* 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); } }
时间: 2024-10-31 16:15:38