Java 1.5中显示数组
2016-03-10 00:00
453 查看
很长一段时间以来,Java编程人员都自己编写方法来打印数组的内容。这是因为JDK没有提供一种将数组转换为字符串值的简便方法。更糟糕的是,一个字符串数组总是从它的toString方法中返回如下信息:
但是,此信息对Java开发人员而言并无太大用处。字符“[”表明它是一个数组,“Ljava.lang.String;”是String类的内部名(数组的元素类型),
“@360be0
”是散列码。这些信息都没有提供有关数组实际内容的任何说明。为此,java.util.Collection提供更有用的toString值:一个以逗号分隔的元素列表。在Java 1.2或更高级的版本中,通过在调用toString方法之前调用asList(使用java.util.Arrays)可以显示一个数组的内容:
此代码可以运行,但是仅为了字符串转换而创建一个List是不经济的。在Java 5中,Arrays类包含了新的方法用于获得一个以逗号分隔的数组元素列表。其中有一个方法返回一个“浅”的字符串表示,即打印每个元素的toString返回值,这样得到的结果等价于调用Arrays.asList(stringArray).toString()。另一个Arrays方法是执行一个“深”的toString转换并能够以任意层次的深度打印数组内包含的任何数组的内容。这种“深”的表示是为了显示多维数组。以下的代码解释了数组到String值的转换并说明了数组的“深”String表示和“浅”String表示的区别:
该程序产生如下输出:
在第一个println中,数组的标准toString仅打印数组类型(即[Ljava.lang.Object]和它的散列码。第二行的浅表示打印数组中由逗号分隔的每个元素的toString返回值,就好像使用了Arrays.asList(multiDimensional).toString()一样。第三行中的深表示打印每个元素和任何嵌套的数组内元素的toString返回值。这种增强的显示数组的新功能是Jav5的一个非常有用的特性。我期待Java添加此特性已有一段时间了。
[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添加此特性已有一段时间了。
相关文章推荐
- Eclipse launch configuration----Eclipse运行外部工具
- 怎么看java程序的运行时间
- Java 多态
- java你可能不知道的事(2)--堆和栈
- spring bean生命周期
- Eclipse中使用recyclerview时出现Caused by: java.lang.NoClassDefFoundError: android.support.v7.recyclerview.R$styleable
- java二叉树实现、遍历、求深度
- java你可能不知道的事(2)--堆和栈
- java你可能不知道的事(2)--堆和栈
- java你可能不知道的事(2)--堆和栈
- Spring中的Bean定义
- Spring分布式事务实现
- 005.Java中switch语句能否作用在byte上,Long呢? String呢?
- 关于VO、PO的理解——java的(PO,VO,TO,BO,DAO,POJO)解释
- 让Bean获取Spring容器
- 004.Java中怎么跳出多重循环?
- Java 的Comparable 和 Comparator
- java泛型详解
- java日志组件介绍(common-logging,log4j,slf4j,logback )
- 【JAVA集合】Vector和Stack(已过时,不建议使用)