覆写equals()方法需要注意的问题:
├ . 不能与一个null值进行比较,否则会报NullPointerException异常
├ . 类型不同时,不能进行比较,否则会报ClassCastException异常
├ . 当与自己进行比较时,应该直接返回true,不应该再对其参数一一比较
★ . String类的equals()方法已经覆写好了,不需要再手动进行覆写.
下面看一下equals方法的覆写代码:
TestDemo.java
package example;
class Book{
private String title;
private double price;
public Book(String title,double price){
this.title = title;
this.price = price;
}
//setter/getter方法...
public boolean equals(Object obj){
//首先判断是否为空
if(obj != null){
//自己和自己比较时,直接返回true
if(obj == this){
return true;
}
//判断是否是同类型的对象进行比较
if(obj instanceof Book){
Book book = (Book)obj;
if(book.title == this.title && book.price == this.price){
return true;
}
}
}
return false;
}
}
public class TestDemo {
public static void main(String[] args) {
Book b1 = new Book("Java开发",1.5);
Book b2 = new Book("Java开发",1.5);
System.out.println(b1==b2);
System.out.println(b1.equals(b2));
}
}