我有两个数组:
char[] chars = { '1', '2', '3' }; int[] numbers = { 1, 2, 3 };
为什么打完电话后System.out.print(chars)我收到123后,而System.out.print(numbers)我有像水木清华[C@9304b1?
System.out.print(chars)
123
System.out.print(numbers)
[C@9304b1
而且,打印后System.out.print("abc" + chars)我也得到了abc[C@9304b1。
System.out.print("abc" + chars)
abc[C@9304b1
我知道这[C@9304b1等于chars.toString()方法,但是为什么有时System.out.print仅打印其元素?
PrintStream,类型为System.out,该print方法有多个重载,其中一个重载包含一个字符数组(char[]):
PrintStream
System.out
print
char[]
public void print(char[] s) 打印字符数组。这些字符将根据平台的默认字符编码转换为字节,并且这些字节将完全按照write(int)方法的方式写入。
public void print(char[] s)
打印字符数组。这些字符将根据平台的默认字符编码转换为字节,并且这些字节将完全按照write(int)方法的方式写入。
因此,在第一个示例中,您将得到123打印。但是,PrintStream由于没有重载print,可以接受an int[]作为参数,因此,您最终调用print(Object),它将使用toStringan 的方法Object,包括其类型和哈希码。
int[]
print(Object)
toString
Object
为了打印int[],您可以Arrays.toString()改用。
Arrays.toString()