我试图在书店程序中运行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