等于方法没有返回正确的值

时间:2017-04-30 12:17:03

标签: java hashcode

我知道我要问的问题很简单,但我是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"但是总是将输出视为错误。任何人请解释。

2 个答案:

答案 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