我有这段代码
class A
{
public static void main(String reds[])
{
A ob=new A();
System.out.println("Object "+ob);
System.out.println("HashCode "+ob.hashCode());
}
}
输出是: Output image
上述代码的输出在大多数情况下给出不同的值。 此外,下面的链接提到打印引用变量打印 ClassName @ hashcode 。
printing reference variable is not printing the object's address
但是,打印引用varibale的输出与hashCode()不同。这里实际发生了什么?
只是想在java中清除我的hashcode概念。
答案 0 :(得分:2)
当您在对象(类型为println()
)上调用A
时,它会打印getClass().getName() + "@" + Integer.toHexString(hashCode())
(这是Object类中toString()
的默认实现),即它将hashCode转换为 hexString 。如果你对hashCode做同样的事情(打印时),你将获得相同的值。
如果您的课程重写toString
,则会打印出来。
答案 1 :(得分:0)
Object.toString()
使用十六进制的hashCode。你是用十进制自己打印的。