Java基礎03-12_對象比較
阿新 • • 發佈:2018-02-02
如果 範例 [] out mark 傳遞 就是 完成 oid
對象比較
如果說現在有兩個數字要判斷是否相等,可以使用“==”完成
如果是字符串要判斷是否相等使用“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略 }
Java基礎03-12_對象比較