在java中,数组不重写 toString()
,因此,如果您尝试直接打印一个,您将得到 className
+“@”+的十六进制 hashCode
数组的 Object.toString()
:
int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray); // prints something like '[I@3343c8b3'
但通常我们想要的是 [1, 2, 3, 4, 5]
. 最简单的方法是什么?以下是一些输入和输出示例:
// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]
// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]
30条答案
按热度按时间vkc1a9a216#
这被标记为用于打印字节[]的副本。注意:对于字节数组,可能有其他合适的方法。
如果它包含iso-8859-1字符,则可以将其打印为字符串。
或者如果它包含utf-8字符串
或者如果你想把它打印成十六进制。
或者如果你想把它打印成base64。
或者如果要打印有符号字节值的数组
或者如果要打印一个无符号字节值数组
omhiaaxx17#
我尝试过的一个简化的快捷方式是:
它会打印出来
这种方法不需要循环,最好只用于小型阵列
u1ehiz5o18#
如果您使用的是java 1.4,则可以执行以下操作:
(当然,这也适用于1.5以上版本。)
xriantvc19#
您可以在数组中循环,在循环时打印出每个项。例如:
输出:
ztigrdn820#
数组.tostring
作为一个直接的答案,包括@esko在内的几个公司提供的解决方案
Arrays.toString
以及Arrays.deepToString
方法,简直就是最好的。java 8-stream.collect(joining()),stream.foreach
下面我试着列出一些建议的其他方法,试图稍加改进,最值得注意的是使用
Stream.collect
运算符,使用joining
Collector
,来模仿String.join
他在做什么。e4yzc0pl21#
for each循环还可以用于打印数组的元素:
tkclm6bt22#
u5i3ibmn23#
在jdk1.8中,可以使用聚合操作和lambda表达式:
ars1skjm24#
在Java8中,这很简单。有两个关键字
流:
Arrays.stream(intArray).forEach
方法参考:::println
```int[] intArray = new int[] {1, 2, 3, 4, 5};
Arrays.stream(intArray).forEach(System.out::println);
int[] intArray = new int[] {1, 2, 3, 4, 5};
Arrays.stream(intArray).forEach(System.out::print);
int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(intArray));
mzsu5hc025#
如果数组是char[]类型,还有一种方法:
印刷品
pkwftd7m26#
不过,知道这一点很好,至于“总是先检查标准库”,我从来没有偶然发现
Arrays.toString( myarray )
--因为我专注于myarray的类型,所以我想看看如何做到这一点。我不想遍历这个东西:我想要一个简单的调用,使它与我在eclipse调试器和myarray中看到的类似,而tostring()没有做到这一点。j2cgzkjk27#
vxbzzdmp28#
如果您运行的是jdk8。
输出:
ttvkxqim29#
这里有一个可能的打印功能:
例如,如果main是这样的
输出将是{[1][2][3][4]}
9lowa7mx30#
在jdk1.8中,可以使用聚合操作和lambda表达式:
另外,从Java8开始,还可以利用string类提供的join()方法打印出数组元素,不使用括号,并用所选的分隔符(下面示例中的空格字符)分隔
`输出将是“嘿,朋友!”