
所有类都从Object中继承了equals方法,源码:public boolean equals(Object o){return this == o;} 直接判断this与o本身是否为同一对象(是否为同一内存单元)。
例如有一个类A; A a1=new A(); A a2=newA();a1,a2为类对象引用变量,指向两个不同内存空间,因此a1.euqals(a2)返回false。
String类中 String str1=new String("smile");
String str2=new String("smile");
虽然str1与st2的内容都是"smile",但它们是构造出来的,分配在不同内存空间(存储在堆中),所以str1.equals(str2)返回false。
String str3="smile"; Stringstr4="smile";
str3与str4都指向数据区中同一个字符串"smile",因此str3.equals(str4)返回true。
如果希望不同内存但内容相同的两个对象equals时返回true,则需要重写父类equals方法。