System.out.print(anArray) anArray=char[] 及anArray=int[] 的区别
?无意看到有人在问,为什么
?
public final static PrintStream out = nullPrintStream();
?接着看PrintStream的print/println存在较多的重载,比较眼尖一下就看到print(char[] s[])以及print(Object x),未看到针对其它类型数组的重载,至此至少发现是这区别导致不同的输出结果。
? 如你所知,数组也是Object,对于非char[]类型数组,都使用print(Object x),这个方法最终使用的是String.valueOf(x),即x.toString(),所以对于非char数组输出引用地址就不中为奇了。
? ?对于print(char[] s),跟到最后发现是使用?sun.nio.cs.StreamEncoder.write(char[] cbuf, int off, int len)方法,配合CharBuffer来完成的,具体可以查看该方法实现。
? ?是否有其它方法让非char[]数组也能便捷的输出元素呢,当然,使用java.utils.Arrays.toString(x);即可
?
?
?