String a=new String("gqb");
String b=new String("gqb");
System.out.println(System.identityHashCode(a));
System.out.println(System.identityHashCode(b));
System.out.println(a.hashCode());
System.out.println(b.hashCode());
String c="dyq";
String d="dyq";
System.out.println(System.identityHashCode(c));
System.out.println(System.identityHashCode(d));
System.out.println(c.hashCode());
System.out.println(d.hashCode());
打印出来的结果是
new String("gqb") 是创建一个类,而=“dyq”这种是保存在常量池中的,所以c和d是指向常量池中同一个地方,所以不但值是一样的,地址也一样,而a和b值是一样的,但是类的地址是不一样的,System.identityHashCode(Object o)对于地址不一样的无论其值是一样的,返回的hashcode还是不一样的