“哥,我听你说数组也是对象,但是Java里面并没有明确定义这样的类。”看来三妹在努力学习。“是的,所以数组没有机会覆盖Object.toString()方法。如果您尝试直接打印数组,输出结果不是我们预期的。”我继续三妹的话。“那怎么打印阵法呢?”三姐很有默契地提出了今天的核心问题。“首先我们来看看为什么不能直接打印数组,如果直接打印会出现什么问题。”我们来看这样一个例子。String[]cmowers={"沉默","汪二","一个有趣的程序员"};System.out.println(cmowers);程序打印结果为:[Ljava.lang.String;@3d075dc0[Ljava.lang.字符串;表示字符串数组的Class名,@后面的hashCode是16进制的hashCode——这种打印结果太“人性化”了,一般人表示看不懂!为什么会这样显示?看java.lang.Object类的toString()方法就明白了。publicStringtoString(){returngetClass().getName()+"@"+Integer.toHexString(hashCode());}再次证明,数组虽然没有明确定义为类,但确实是一个对象,继承了祖先类对象的所有方法。“兄弟,数组为什么不单独定义一个类来表示呢?就像String类一样?”三妹的问题很迷惑,但也很好解释。”一个合理的说法是Java隐藏了它。如果有这样一个类,我们就叫它Array.java吧。我们想象一下它真正的样子。必须有一个容器来存储数组的每个元素,就像String一样班级。”一边回答三妹,一边打开了String类的源码。publicfinalclassStringimplementsjava.io.Serializable,Comparable
