今天我正在尝试下面的代码,并期望sysout的输出不同.
public class StringDemo {
public static void main(String[] args) {
String s1 = new String("Hi");
String s2 = new String("Hi");
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到了同样的价值.任何人都可以解释一下这件事是如何运作的吗?
谢谢,Sourav
String有自己的实施hashCode()(谢天谢地),这是基于的内容String.如果你有两个相同的字符串(无论它们是如何创建的),那么你最终会得到同样的结果hashCode().
下面是实施String.hashCode()从JDK 7(简化):
public int hashCode() {
int off = offset;
char val[] = value;
int len = count;
for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
return h;
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它完全基于内容String.
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |