我試圖在書店程序中運行getBook()方法,它可以讓我找到存儲在AL 書籍中的書籍,不僅如果標題和作者是正確的,而且如果其中之一他們是空的。 所以,我寫了這個代碼:Java:如果條件設置
public Book getBook(String author, String title){
boolean condOk = false;
Book book = null;
if(books!=null){
for(int i=0; i<books.size(); i++){
if((author==null && title.equals(books.get(i).getTitle())) ||
(author.equals(books.get(i).getAuthor()) && title==null)){
condOk = true;
book = books.get(i);
break;
} else if(title.equals(books.get(i).getTitle()) &&
author.equals(books.get(i).getAuthor())){
condOk = true;
book = books.get(i);
break;
}
}
}
if(condOk==false) return null;
else return book;
}
這部分的J-單元測試(不是由我創建),放入書 4個對象(有構造函數:標題字符串,字符串作者,... ),然後測試方法getBook()三次:作者和標題,標題表達和作者null,以及最後一次情況相反。
我已經嘗試了一些東西,我注意到如果我用邏輯op替換所有的equals()調用==一切正常。 在Book類中,一切都是正確的,所有的getter和setter都在正確的位置。
那麼,爲什麼我會得到這樣的行爲,當我讀了幾次比較字符串與equals()比用==做得更好?
「如果我用邏輯操作符==代替所有的equals()調用,一切正常」 - 看起來更可能是該語句是錯誤的結論,因爲'equals' *是正確的方法來比較不同的字符串。對於引用類型,只有當a和b是*相同*實例時,'a == b'纔會返回true。 – user2864740 2014-09-13 06:32:01
你說「等於中斷」是什麼意思? – 2014-09-13 06:34:39
@ user2864740不一定。在這種情況下,使用相同的字符串常量的引用。這就是爲什麼它工作正常 – ponomandr 2014-09-13 06:34:43