您的位置:首页 > 编程语言 > Java开发

Java 1.5中显示数组

2016-03-10 00:00 453 查看
很长一段时间以来,Java编程人员都自己编写方法来打印数组的内容。这是因为JDK没有提供一种将数组转换为字符串值的简便方法。更糟糕的是,一个字符串数组总是从它的toString方法中返回如下信息:

[Ljava.lang.String;@360be0


但是,此信息对Java开发人员而言并无太大用处。字符“[”表明它是一个数组,“Ljava.lang.String;”是String类的内部名(数组的元素类型),
“@360be0
”是散列码。这些信息都没有提供有关数组实际内容的任何说明。为此,java.util.Collection提供更有用的toString值:一个以逗号分隔的元素列表。在Java 1.2或更高级的版本中,通过在调用toString方法之前调用asList(使用java.util.Arrays)可以显示一个数组的内容:

String[] stringArray = new String[] {"A", "String", "Array"};
String stringValue = Arrays.asList(stringArray).toString();

此代码可以运行,但是仅为了字符串转换而创建一个List是不经济的。在Java 5中,Arrays类包含了新的方法用于获得一个以逗号分隔的数组元素列表。其中有一个方法返回一个“浅”的字符串表示,即打印每个元素的toString返回值,这样得到的结果等价于调用Arrays.asList(stringArray).toString()。另一个Arrays方法是执行一个“深”的toString转换并能够以任意层次的深度打印数组内包含的任何数组的内容。这种“深”的表示是为了显示多维数组。以下的代码解释了数组到String值的转换并说明了数组的“深”String表示和“浅”String表示的区别:

Object[] multiDimensional = new Object[] {
"mercury", new Object[] {},
"venus", new Object[] {},
"earth", new Object[] { "moon" },
"mars", new Object[] { "phobos", "deimos" }
};
System.out.println(multiDimensional);
System.out.println(Arrays.toString(multiDimensional));
System.out.println(Arrays.deepToString(multiDimensional));


该程序产生如下输出:

[Ljava.lang.Object;@18d107f
[mercury, [Ljava.lang.Object;@1372a1a, venus,
[Ljava.lang.Object;@ad3ba4, earth,
[Ljava.lang.Object;@126b249, mars, [Ljava.lang.Object;@182f0db]

[mercury, [], venus, [], earth, [moon], mars, [phobos, deimos]]


在第一个println中,数组的标准toString仅打印数组类型(即[Ljava.lang.Object]和它的散列码。第二行的浅表示打印数组中由逗号分隔的每个元素的toString返回值,就好像使用了Arrays.asList(multiDimensional).toString()一样。第三行中的深表示打印每个元素和任何嵌套的数组内元素的toString返回值。这种增强的显示数组的新功能是Jav5的一个非常有用的特性。我期待Java添加此特性已有一段时间了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: