判断两个对象的属性值是否相等的方法,
class Book{ private String title; private double price; public Book(String title,double price){ this.title = title; this.price = price; } public boolean compare(Book book){ if(book == null){ return false; } if(this.equals(book)){ //this表示调用该方法的对象,此处也可以:this==book;表示thi和book指的是同一个对象 return true; } if(this.title.equals(book.title) && this.price == book.price){//本类对象可以在本类内部调用私有属性 return true; }else{ return false; } } } public class Test{ public static void main(String args[]){ Book b1 = new Book("数据结构",18.6); Book b2 = new Book("数据结构",18.6); Book b3 = new Book("数据结构与抽象",37.0); System.out.println(b1.compare(b2));//true System.out.println(b1.compare(b3));//false System.out.println(b1.compare(b1));//true System.out.println(b1==b2);//false } }
利用Objectl类中的public boolean equals()方法完善对象比较
class Book{ private String title; private double price; public Book(String title,double price){ this.title = title; this.price = price; } public boolean equals(Object obj){ if(obj == null){ return false; } if(this == obj){ return true; } if(!(obj instanceof Book)){ //如果obj属于Book类对象,没有存在比较的意义, return false; } Book book = (Book) obj; //向下转型 if(this.title.equals(book.title) && this.price == book.price){//本类对象可以在本类内部调用私有属性 return true; } return false; } } public class Test{ public static void main(String args[]){ Book b1 = new Book("数据结构",18.6); Book b2 = new Book("数据结构",18.6); Book b3 = new Book("数据结构与抽象",37.0); System.out.println(b1.equals(b2));//true System.out.println(b1.equals(b3));//false System.out.println(b1.equals(b1));//true System.out.println(b1==b2);//false } }