//  Object类

//  equals()方法

//  演示重写equals()方法判断两个对象是否相等,并将结果打印到控制台。

package ch04;

// 图书类

public class Book {

    String isbn;// ISBN

    String name;// 书名

    double price;// 价格


    public boolean equals(Object obj){

        if(this == obj)//如果是同一个实例,则相等

            return true;

        if(obj == null)//如果obj为null,不可能相等

            return false;

        if(getClass()!=obj.getClass())//如果类型不同,认为不相

            return false;

        Book other=(Book)obj;

        if(isbn==null){

            //当前实例isbn为空,obj的isbn不为空,则不相等

            if(other.isbn!=null)

                return false;

        }else if(!isbn.equals(other.isbn))//isbn不同,则不相等

            return false;

        if(name == null){

            //当前实例name为空,obj的name不为空,则不相等

            if(other.name!=null)

                return false;

        }else if(!name.equals(other.name))//name不同,则不相等

            return false;

        //price不同,则不相等

        if(Double.doubleToLongBits(price)

                !=Double.doubleToLongBits

(other.price))

            return false;

        return true;//其余情况,认为相等

    }

}