对象比较

基础的对象判断:

class Book {
    private String title;
    private double price;
    public Book(){}
    public Book(String title,double price){
        this.title = title;
        this.price = price;
    }
    
    public void setTitle(String title){
        this.title = title;
    }
    public void setPrice(double price){
        this.price = price;
    }
    public String getTitle(){
        return this.title;
    }
    public double getPrice(){
        return this.price;
    }
    
    public String getInfo(){
        return 
        "title = " + this.title + "\n" +
        "price = " + this.price;
    }
}

public class Demo{
    public static void main(String args[]){
        Book b1 = new Book("Java入门到放弃", 79.9);
        Book b2 = new Book("Java入门到放弃", 79.9);
        
        if((b1.getTitle()==b2.getTitle())&&(b1.getPrice()==b2.getPrice())){
            System.out.println("b1和b2是同个对象!");
        } else {
            System.out.println("b1和b2不是同个对象!");
        }
    }
}

以上代码实现了两个实例化对象的比较,对象的比较是挨个比较对象的属性,如果全部一样则可看看做两个对象一样。

上面的比较是在 main() 中实现的,main() 相当于一个客户端,所以程序逻辑应该越简单越好。

应该将代码封装在类中。

public class Demo{
    public static void main(String args[]){
        
        Book bk1 = new Book("Java入门到放弃",59.99);
        Book bk2 = new Book("Java入门到放弃",59.99);
        
        if(bk1.compare(bk2)){
            System.out.println("bk1和bk2是同个对象");
        } else {
            System.out.println("bk1和bk2不是同个对象");
        }
    }
}

class Book{
    
    private String title;
    private double price;
    
    public Book(){}
    public Book(String title, double price){
        this.title = title;
        this.price = price;
    }
    
    public void setTitle(String title){
        this.title = title;
    }
    public void setPrice(double price){
        this.price = price;
    }
    public String getTitle(){
        return this.title;
    }
    public double getPrice(){
        return this.price;
    }
    
    public String getInfo(){
        return 
        "title = " + this.title + "\n" +
        "price = " + this.price;
    }
    
    public boolean compare(Book book){
        
        //判断是否为null
        if(book==null){
            return false;
        }
        //判断是否为同一个对象
        else if(this==book){
            return true;
        }
        else{
            if(this.title.equals(book.title)&&this.price==book.price){
                return true;
            }
            else{
                return false;
            }    
        }
    }
}
/*--------------------------------------------------------------
E:\Javacode>java Demo
bk1和bk2是同个对象

E:\Javacode>*/

 

posted @ 2019-02-18 17:47  眉毛病  阅读(227)  评论(0编辑  收藏  举报