[英]Printing array of primitives in Java
我有两个数组:
char[] chars = { '1', '2', '3' };
int[] numbers = { 1, 2, 3 };
为什么在调用System.out.print(chars)
我在System.out.print(numbers)
之后得到123
我有点像[C@9304b1
?
更重要的是,在打印System.out.print("abc" + chars)
我也得到了abc[C@9304b1
。
我知道[C@9304b1
等于chars.toString()方法,但为什么有时System.out.print只打印它的元素?
PrintStream
是System.out
的类型,对print
方法有几个重载,其中一个带有一个字符数组( char[]
):
打印一个字符数组。 根据平台的默认字符编码将字符转换为字节,这些字节的写入方式与write(int)方法完全相同。
因此,在您的第一个示例中,您将打印123
。 但是, PrintStream
没有可以接受int[]
作为参数的print
的重载,因此,最终调用print(Object)
,它将使用Object
的toString
方法,包括其类型和hashcode。 。
为了打印int[]
,您可以使用Arrays.toString()
代替。
因为默认的toString()只是打印出一个默认的“这里是这个对象是什么/在哪里”,不同的类型做不同的事情。
原因是System.out.print可以接受一个char数组并将其转换为可打印文本,从而给出字符串“123”,但整数数组没有隐式方法将其自身显示为文本,因此它只显示数组的地址。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.