我们都知道,当我们需要打印一个对象时,都是直接调用的toString方法,而这个方法即使不重写,也是可以调用的,因为它是Object类的方法,我们都知道,在java中,所有的类的超类都是Object.Object这个类里面的方法显的尤其重要,toString这个方法呢,就是为了让我们能得到一个对象的文本表现形式,从而窥测这个对象里面的属性。
通常我们在不重写时,可能会得到这样的一串结果
[email protected]
那这个东西到底是什么呢,尤其是后面这一串是什么鬼
看一下源码就知道了
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
其实很简单,这个结果就是上面拼接出来的,hashCode是一个对象在堆里面对应的一个地址,尽量不要重写,除非在特定场合下,每一个对象的hashCode不要重复。
练拳不练功,到头一场空。我搞了这么长时间的java,连Object的toString方法是怎么回事儿,直到今天才明白,说起来实在是惭愧啊.