2 回答
TA贡献2036条经验 获得超8个赞
对于Person类的2个实体化对象P1与P2来说,他们被new出来后,占用的是不同的存储单元的,所以他们的地址并不相同,因此p1.equals(p2)为false 。
如果需要返回的结果为true,你必须重写equals方法。
例如在Person类里面重写equals方法(假设Person里面成员变量i的值相等就可以认为两个对象相等):
public boolean equals(Person p) {
if(this.i == p.i) {
return true;
} else {
return false;
}
}
}
TA贡献1842条经验 获得超21个赞
equals 和 == 的区别
*
* @author FlyFive(pengfei.dongpf@gmail.com)
* created on 2013-1-5
*/
public class EqualsTest {
public static void main(String[] args) {
String s01 = new String("hello world");
String s02 = new String("hello world");
System.out.println("两个new出来的String");
System.out.println(s01.equals(s02));
System.out.println(s01 == s02);
String s11 = new String("hello world");
String s12 = s11;
System.out.println("两个相同的String");
System.out.println(s11 == s12);
System.out.println(s11 == s12);
String s21 = "hello world";
String s22 = "hello world";
System.out.println("两个直接赋值的String");
System.out.println(s21.equals(s21));
System.out.println(s21 == s22);
Object s31 = new Object();
Object s32 = new Object();
System.out.println("两个new出来的普通对象");
System.out.println(s31.equals(s31));
System.out.println(s31 == s32);
Integer s41 = new Integer(1);
Integer s42 = new Integer(1);
System.out.println("两个new出来的基本类型包装类");
System.out.println(s41.equals(s41));
System.out.println(s41 == s42);
}
}
添加回答
举报