为什么只有以下作品?
char [] indeed = new char []{'a','b'};
System.out.println(indeed);// ehy it's seems like toString has been overridden!
而所有其他人似乎都没有覆盖他们的toString。
int [] indeed = new int []{3,3};
System.out.println(indeed); // does not work
有人知道为什么会这样吗?
答案 0 :(得分:6)
PrintStream对于许多类型的print / println都有特殊的实现,但char[]
是唯一具有自定义实现的数组类型。
注意:您也可以write(byte[])
。
我认为这是因为此类设计用于打印char
和byte
以及byte[]
char[]
似乎一致。
已知问题是数组的toString()是从Object继承的,这不是很有用。相反,你必须找到一个合适的辅助方法,为你提供有用的toString,equals和hashCode()(在数组中),但也有一个也很有用的Array类。
我建议在Java 7中修复这个问题,我回来的谣言是正确修复数组会非常复杂。在任何情况下,它都不会在Java 8中修复。
答案 1 :(得分:1)
http://docs.oracle.com/javase/6/docs/api/java/io/PrintStream.html#println%28char[]%29
class PrintStream
public void println(char x[])
:)
尝试这些
System.out.println(indeed.toString());
System.out.println((Object)indeed);