Java基础03-12_对象比较

对象比较

如果说现在有两个数字要判断是否相等,可以使用“==”完成

如果是字符串要判断是否相等使用“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 TestDemo {
	public static void main(String args[]) {
		Book b1 = new Book("Java开发", 79.8);// 实例化Book类对象
		Book b2 = new Book("Java开发", 79.8);// 实例化Book类对象
		if (b1.getTitle().equals(b2.getTitle())&& b1.getPrice() == b2.getPrice()) // 属性比较
			System.out.println("是同一个对象!");
		} else {
			System.out.println("不是同一个对象!");
		}
	}
}

范例:对象比较实现

class Book {
	private String title ;
	private double price ;
	public Book(String title,double price) {
		this.title = title ;
		this.price = price ;
	}
	/**
	 * 进行本类对象的比较操作,在比较过程中首先会判断传入的对象是否为null,而后判断地址是否相同,
	 * 如果都不相同则进行对象内容的判断,由于compare()方法接收了本类引用,所以可以直接访问私有属性
	 * @param book 要进行判断的数据
	 * @return 内存地址相同、或者属性完全相同返回true,否则返回false
	 */
	public boolean compare(Book book) {
		if (book == null) {		// 传入数据为null
			return false ;		// 没有必要进行具体的判断
		}
		// 执行“b1.compare(b2)”代码时会有两个对象:当前对象this(调用方法对象,就是b1引用); 传递的对象book(引用传递,就是b2引用)
		if (this == book) {		// 内存地址相同
			return true ;		// 避免进行具体细节的比较,节约时间
		}
		if (this.title.equals(book.title)
			&& this.price == book.price) {	// 属性判断
			return true ;
		} else {	return false ;	}
	}// setter、getter略
}

原文地址:https://www.cnblogs.com/xuwei1/p/8405386.html