1,equals().
“abd”.equals(“abc”)采取的是两字符串长度相等,在相等情况下,分别赋值给两字节数组,循环数组,如对应位置两数组值不相等,则return false;如都相等,则 return true. 源码如下:
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String){ String anotherString =(String) anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0){ if (v1[i] != v2[i]) return false; i++; } return true; } } return false;}2, hashcode().Stringstr=”ab”;
str.hashcode()==3105==(0*31+97)*31+98 //其中 97=a;98=b. a对应的ascii码=97。
把字符串分成字符数组,
用一个初始值为零的值,按公式 h=31*h+chararray[i] 在遍历该字符串时候,重复计算,最后的h值就是该字符串数组的hashcode()返回值。 源码如下:
public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value.length; i++) { h = 31 * h + val[i]; } hash = h; } return h; }
新闻热点
疑难解答