读书人

求解释这2段代码的解决办法

发布时间: 2012-01-11 22:28:46 作者: rapoo

求解释这2段代码的
CODE ONE:
class Uer{
public static void main(String args[]){

System.out.println(s.hashCode());
}
private static String s="me";
private static int n=11;


public int hashCode()
{
return n*s.hashCode();
}

}

我在注释掉重写的hashCode方法和没有注释掉之前,两次运行的输出怎么都是一样的?
============================
CODE TWO:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}

这是equals方法的重写,我想问下int n=count;这句的意思,我单纯写了这个句子,编译错误。

[解决办法]
CODE ONE:这是当然了。
s.hashCode()调用的就是他本身的hashcode()算法。你重写的是Usr类的hashCode。

Java code
class Uer {    public static void main(String args[]) {        System.out.println(Uer.hashCode(s));//调用下面的hashCode,当然现在不是重写类的hashcode        System.out.println(s.hashCode());//这个调用的s对象自己的hashcode            }    private static String s = "me";    private static int n = 11;    public static int hashCode(String s) {        return n * s.hashCode();    }    @Override    public int hashCode() {        return n * s.hashCode();    }} 

读书人网 >J2SE开发

热点推荐