第 9 节 对象比较
在比较两个数字是否相等的时候,可以使用“==”来操作,比较两个字符串是否相等可以使用“equals()”来操作,如果说现在有一个自定义的类,该如何来判断这个类的两个对象是否相等。对象=数据集合,实际上判断对象是否相等就是判断对象内的属性是否相等。
范例: 基础的比较方式
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 MainClass {
public static void main(String[] args) {
Book b1 = new Book("Java基础入门", 79.8);
Book b2 = new Book("Java基础入门", 79.8);
if (b1.getTitle().equals(b2.getTitle())
&& b1.getPrice() == b2.getPrice()) {
System.out.println("是同一个对象");
} else {
System.out.println("不是同一个对象");
}
}
}
这种形式是一个最基础的对象比较功能的实现,按照以上要求进行类属性的比较。
但是以上的代码存在着诸多问题:
主方法是一个客户端,要求逻辑越简单越好,最好隐藏所有细节逻辑。
如果想要进行比较,那么具体的细节应由每个对象自己完成,对象类中一定要自己提供对象比较的方法,这个方法暂定compare()。
范例: 对象比较实现
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 boolean compare(Book book) {
if (book == null) {
return false;
}
if (this == book) {
return true;
}
if (this.getTitle().equals(book.getTitle())
&& this.getPrice() == book.getPrice()) {
return true;
} else {
return false;
}
}
}
public class MainClass {
public static void main(String[] args) {
Book b1 = new Book("Java基础入门", 79.8);
Book b2 = new Book("Java基础入门", 79.8);
if (b1.compare(b2)) {
System.out.println("是同一个对象");
} else {
System.out.println("不是同一个对象");
}
}
}
最后更新于
这有帮助吗?