对象比较
基础的对象判断:
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>*/