我知道我要问的问题很简单,但我是Java的新手,所以我觉得很难。
我已经在我的课程中覆盖了hashCode和equals方法。
public class Hashing {
public static void main(String[] args) {
String s1=new String("a");
String s2=new String("b");
System.out.println(s1.equals(s2));
}
@Override
public int hashCode() {
return 1;
}
@Override
public boolean equals(Object arg0) {
return true;
}
}
现在输出应该是" true"但是总是将输出视为错误。任何人请解释。
答案 0 :(得分:2)
您确实创建了equals()
方法,但它适用于Hashing
类,而不是String
类。
很遗憾,您无法覆盖String
的{{1}} / equals
方法,因为它是hashCode
类(无法进行子类化,因此会被覆盖)。
答案 1 :(得分:0)
在您的代码中,s1和s2是String类的对象。因此,在编写s1.equals(s2)时,它正在调用String类的equals方法(可以通过反编译器检查其实现)。 您已为类哈希提供了重写方法。
如果您写过这样的内容,那么输出将是 true
Unrecognized VM option 'PrintGCDateStamps', -loggc deprecreated, -cp requires a classpath specified