对象的比较和equals的重写
对象比较的时候,需要用equals比较,可以比较不同对象的相同的内容;当使用==比较的是对象是否为同一个对象,同时,两边的对象的类型必须相同,但是两边不是相同类型的时候,如果具有父子关系的时候也可以进行对比。
注意:String中有特殊的情况 ;当用new实例化相同的字符串的时候,会将其放入到常量池中,用==比较的时候会发生引用传递如果希望不发生此种情况,
重写equals进行自定义对象的的对比的时候,分为以下几步:
1、比较传经来的object和当前this对象是否相同。
2、判断object是否为所对比的类的实例化(instanceOf)。
3、将object传进来的值逐个和this的属性做对。
例如在对Data类中的equals重写:
1 public boolean equals(Object obj){ 2 if(this == obj){ 3 return true; 4 } 5 //强制类型转换, 6 if (obj instanceof Data) { 7 Data data = (Data) obj; 8 if(this.data == data.data &&this.year == data.year && this.mouth == data.year){ 9 return true; 10 } 11 } 12 return false; 13 }