Java 数组输出乱码-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Java 数组输出乱码

爵霸 2016-06-08 12:52:31 1863
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 真的弄不懂了。 
Java
分享到
取消 提交回答
全部回答(1)
  • 爵霸
    2019-07-17 19:31:40

    首先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/

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程