我有一个字符串数组,其中包含我定义的四个元素。为什么当我输入System.out.println(name of Array)时,它不输出元素?但是却给了我一个奇怪的输出。
这是我的代码。
public class GeniusTrial {
public static void main(String[]args) {
String [] genius = {"Einstein, ", "Newton, ", "Copernicus, ", "Kepler."};
System.out.print(genius);
}
} 下面是我得到的输出:
[Ljava.lang.String;@3e25a5发布于 2011-12-07 12:13:22
数组的toString()方法返回一个描述数组标识的String,而不是它的内容。这是因为数组不覆盖Object.toString(),它的文档解释了您所看到的内容:
类
Object的toString方法返回一个字符串,该字符串由对象所在的类的名称、at-sign字符‘@’和对象哈希码的无符号十六进制表示形式组成。换句话说,此方法返回的字符串等于:
getClass().getName() + '@‘+ Integer.toHexString(hashCode())
要获得数组内容的String表示,可以使用Arrays.toString(Object[])。
此方法返回的String由每个元素的toString()表示组成,按照元素在数组中出现的顺序并用方括号("[]")括起来。相邻元素用逗号和空格(", ")分隔。
例如,在数组上调用此方法将产生以下String
"[Einstein, , Newton, , Copernicus, , Kepler.]"注意,出现双逗号和奇数间距是因为数组的元素String中已经有标点符号和空格。删除这些内容:
String [] genius = {"Einstein", "Newton", "Copernicus", "Kepler"};然后,该方法将返回此String
"[Einstein, Newton, Copernicus, Kepler]"需要注意的是,使用此方法并不会让您对生成的 String**.**的格式进行任何控制它对于快速检查数组的内容非常有用,但它的局限性超出了此目的。例如,如果您不想要方括号,或者想要逐行列出每个元素,该怎么办?
此时,您应该开始看到以特定于您的任务的方式实现自己的方法来输出数组内容的价值。正如其他人所建议的那样,通过使用for循环并构建要输出的新的结果String来实践这一点。
您可以在this Java Tutorials article中找到有关for循环的更多信息。一般来说,Java Tutorials对于初学者来说是很棒的读物,应该能很好地配合你的课程。
发布于 2011-12-07 12:14:46
使用Arrays类为您展开数组:
System.out.println(Arrays.toString(genius));会给你带来
爱因斯坦,牛顿,哥白尼,开普勒。
双逗号是因为您将它们包含在数组中;删除它们,您将得到一个很好的逗号分隔列表。
发布于 2011-12-07 12:13:19
你需要一个循环:
for(String gen : genius)
{
System.out.print(gen);
}每个对象都有一个您所看到的toString()方法,即字符串数组的toString。
https://stackoverflow.com/questions/8410294
复制相似问题