程序代码:
public class ExplorationJDKSource {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(new A());
}
}
class A{}
运行结果:
A@2a139a55
为啥会产生这样的结果??!!
原因分析:
main方法实际上调用的是: public void println(Object x),这一方法内部调用了String类的valueOf方法。
valueOf方法内部又调用Object.toString方法:
public String toString()
{
return getClass().getName() +"@" + Integer.toHexString(hashCode());
}
hashCode方法是本地方法,由JVM设计者实现: public native int hashCode();
所以通过层层调用结果就显示出了 类名+@+哈希值!! ! 哈哈哈