public class TestDate{
public static void main(String[] args){
Date[] days = new Date[5];
days[0] = new Date(1992 ,10 ,1);
days[1] = new Date(1993 ,9 ,7);
System.out.println(days[0]);
}
}
class Date {
int year,month,day;
Date(int y, int m, int d){
year=y;month=m;day=d;}
}
``
程序如图,随便输出一个Date类的对象 却得到一串数字,days[0]输出 Date@20f0691c 真的弄不懂了。
首先out是System类的静态变量,其类型是PrintStream,
println()是PrintStream的一个静态函数,如果其参数为对象,则调用该对象的toString()函数,
你程序里days[0]是个你自定义的Date对象,该对象没定义toString()这个函数,但Java中所有的类最终都继承自java.lang.Object对象,所以此时调用的是java.lang.Object.toString()这个函数,
根据java API中的这个函数的说明,其输出的是:getClass().getName() + '@' + Integer.toHexString(hashCode()),也就是:类名@16进制形式的hashCode。
同样Date没定义hashCode()这个函数,所以调用的是 java.lang.Object.hashCode(),这个函数输出的是该对象在内存中的地址。
所以结果就是:Date@20f0691c
详情请参考Java API文档,地址:http://docs.oracle.com/javase/7/docs/api/
集结各类场景实战经验,助你开发运维畅行无忧