如何优雅地打印Java数组?
4.3 打印Java数组
“哥,之前听你说,数组也是一个对象,但 Java 中并未明确的定义这样一个类。”看来三妹有在用心地学习。
“是的,因此数组也就没有机会覆盖 Object.toString() 方法。如果尝试直接打印数组的话,输出的结果并不是我们预期的结果。”我接着三妹的话继续说。
“那怎么打印数组呢?”三妹心有灵犀地把今天的核心问题提了出来。
为什么不能直接打印数组
“首先,我们来看一下,为什么不能直接打印数组,直接打印的话,会出现什么问题。”
来看这样一个例子。
String [] cmowers = {"沉默","王二","一枚有趣的程序员"};
System.out.println(cmowers);
程序打印的结果是:
[Ljava.lang.String;@3d075dc0
[Ljava.lang.String; 表示字符串数组的 Class 名,@ 后面的是十六进制的 hashCode——这样的打印结果太“人性化”了,一般人表示看不懂!为什么会这样显示呢?查看一下 java.lang.Object 类的 toString() 方法就明白了。
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
再次证明,数组虽然没有显式定义成一个类,但它的确是一个对象,继承了祖先类 Object 的所有方法。
“哥,那为什么数组不单独定义一个类来表示呢?就像字符串 String 类那样呢?”三妹这个问题让...
真诚点赞 诚不我欺
回复