繁体   English   中英

在Java中打印基元数组

[英]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只打印它的元素?

PrintStreamSystem.out的类型,对print方法有几个重载,其中一个带有一个字符数组( char[] ):

public void print(char[] s)

打印一个字符数组。 根据平台的默认字符编码将字符转换为字节,这些字节的写入方式与write(int)方法完全相同。

因此,在您的第一个示例中,您将打印123 但是, PrintStream没有可以接受int[]作为参数的print的重载,因此,最终调用print(Object) ,它将使用ObjecttoString方法,包括其类型和hashcode。 。

为了打印int[] ,您可以使用Arrays.toString()代替。

因为默认的toString()只是打印出一个默认的“这里是这个对象是什么/在哪里”,不同的类型做不同的事情。

原因是System.out.print可以接受一个char数组并将其转换为可打印文本,从而给出字符串“123”,但整数数组没有隐式方法将其自身显示为文本,因此它只显示数组的地址。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM