初探java对象比较

判断两个对象的属性值是否相等的方法,

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
    }
}

 

posted @ 2017-08-07 22:07  小洋编程  阅读(130)  评论(5编辑  收藏  举报