java 的默许构造方法

java 的默认构造方法
请问下面的代码为什么会输出
debug.Foo@659e0bfd   //为什么会输出这一行东西,默认构造方法都会输出这串东西吗?


package debug;
public class Doo6 {
public static void main(String[] args) {
Foo foo = new Foo();

System.out.println();
}
}
class Foo{

}


谢谢了
------解决思路----------------------
就你贴出来的代码来说,应该是输出一个空行而已。你遇到的问题,应该是写成了这样:System.out.println(foo);

至于为什么是那一串,是因为System.out.println(foo);语句自动调用了foo的toString()方法,这个方法继承自Object类,具体的实现我忘了,反正后面那串码你可以当作对象的身份证号来理解。
------解决思路----------------------
    
Object类的toString方法如下:
public String toString() {
        return getClass().getName() + '@' + Integer.toHexString(hashCode());
    }
你打印的foo的toString()方法,也就是Foo的父类Object的toString()方法
------解决思路----------------------
原型不就是
这个对象的hashcode嘛。。
hashCode 你可以重写的嘛。。
Object 的hashCode怎么实现的,就不知道了。调用的是native  
看不见源码
------解决思路----------------------
引用:
那请问  “659e0bfd”这一串是16进制的,那它的原型是什么啊


Object的hashCode()是以对象地址计算的,它的原型就是对象的地址(但并不代表hashCode返回的值就是对象的内存地址,因为hashCode应该还进行了一次运算)

而Object的toString()方法是用运行时类名+@+16进制的hashCode