如果有两个数字要判断是否相等,可以使用“==”完成,如果是字符串要判断是否相等可以使用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){
return false;
}
if(this==book){
return true;
}
if(this.title.equals(book.title)&&this.price==book.price){
return true;
}else{
return false;
}
}
}
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.