因此,我正在编写一个equals方法来比较同一类的不同对象中字符串的相等性。比较两个对象时,我的方法的第一个版本不起作用,有人可以解释为什么
//这是第一版未通过的测试
@Test
public void testEqualsTrue2() {
Fragment f = new Fragment(new String("GCAT"));
Fragment g = new Fragment(new String("GCAT"));
assertTrue(f.equals(g));
assertTrue(g.equals(f));
}
//这些是方法中使用的代码的相关部分;
public class Fragment {
String nucleotideSequence;
@Override
public String toString() {
return nucleotideSequence;
}
}
//这是该代码的版本之一,不适用于上述测试
@Override
public boolean equals(Object o) {
if(nucleotideSequence == o.toString()) {
return true;
}
return false;
}
//这是可行的版本
@Override
public boolean equals(Object o) {
boolean k = true;
if(o instanceof Fragment == false){
k = false;
}
else{
for(int i = 0; i<frag.length(); i++){
if(frag.charAt(i) == o.toString().charAt(i)){
k = true;
}
else
k = false;
}
}
return k;
}