对象比较

如果有两个数字要判断是否相等,可以使用“==”完成,如果是字符串要判断是否相等可以使用equals()方法,但如果有一个自定义的类,要想判断它的两个对象是否相等,那么必须实现类对象中所有属性内容的比较。下面就来介绍一下对象比较的方法:
1.基础比较方式
class Book{
   private String title;
   private double price;
   
   public Book(String title,double price){
       this.title=title;
       this.price=price;
   }
   public String getTitle(){
       return this.title;
   }
   public double getPrice(){
       return this.price;
   }
}
public class TestDemo{
  public static void main(String args[]){
     Book b1=new Book("JAVA从入门到精通",89.9);
     Book b2=new Book("JAVA从入门到精通",89.9);
     if(b1.getTitle().equals(b2.getTitle())&&b1.getPrice()==b2.getPrice()){
         System.out.println("它们是同一个对象!");
     }else{
         System.out.println("它们不是同一个对象!");
     }
  }
}
此程序虽然实现了两个对象的比较,但是其中任然存在着问题,就是比较的过程是在客户端(也就是主方法、主类)中完成的,这不合适,因为这种比较的操作应该是每个对象应具备的功能,应该有本类完成。
2.对象比较的实现
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){                       //传入数据为null
         return false;
      }
      if(this==book){                       //内存地址相等
         return true;
      }
      if(this.title.equals(book.title)&&this.price==book.price){
         return true;
      }else{
         return false;
      }
   }
   //setter、getter方法省略
}
public class TestDemo{
  public static void main(String args[]){
    Book b1=new Book("Python从入门到精通",89.9);
    Book b2=new Book("Python从入门到精通",89.9);
    if(b1.compare(b2)){
       System.out.println("它们是同一个对象!");
    }else{
       System.out.println("它们不是同一个对象!");
    }
  }
}
此程序直接在Book类中定义了一个compare()方法进行对象的比较,而且当一个类接受了本类对象的引用后,
可以直接调用本类中的私有化操作。所以对于compare()就有了两个实例化对象,一个为传入的Book类对象,
一个为当前对象this.
posted @ 2019-07-30 18:24  Ronin_JC  阅读(15)  评论(0)    收藏  举报