我有一个字符串数组,其中包含我定义的四个元素。为什么当我输入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
答案 0 :(得分:18)
数组的toString()
方法返回描述数组标识的String
而不是其内容。这是因为数组不会覆盖Object.toString()
,其文档解释了您所看到的内容:
类
toString
的{{1}}方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@”和无符号的十六进制表示形式组成。对象的哈希码。换句话说,此方法返回一个等于值的字符串:Object
要获得数组内容的getClass().getName() + '@' + Integer.toHexString(hashCode())
表示,您可以使用Arrays.toString(Object[])
。
此方法返回的String
由每个元素的String
表示形式组成,按照它们在数组中出现的顺序并用方括号括起来(toString()
)。相邻元素由逗号和空格("[]"
)分隔。
例如,在数组上调用此方法将导致以下", "
:
String
请注意,会产生双逗号和奇数间距,因为数组的元素"[Einstein, , Newton, , Copernicus, , Kepler.]"
已经有标点符号和空格。删除那些:
String
然后该方法将返回此String [] genius = {"Einstein", "Newton", "Copernicus", "Kepler"};
:
String
重要的是要注意使用此方法无法控制结果"[Einstein, Newton, Copernicus, Kepler]"
的格式。快速检查数组内容很好,但是限制超出了这个目的。例如,如果您不希望那些包含方括号,或者想要逐行列出每个元素,该怎么办?
此时,您应该开始看到实现自己的方法的价值,以便以特定于您的任务的方式输出数组的内容。正如其他人所建议的那样,通过使用String
循环并构建要输出的新结果for
来实现此目的。
您可以在this Java Tutorials article中找到有关String
循环的更多信息。一般来说,Java Tutorials对于初学者来说是很好的阅读,并且应该很好地伴随你的课程。
答案 1 :(得分:8)
使用Arrays类为您展开数组:
System.out.println(Arrays.toString(genius));
会给你
[爱因斯坦,,牛顿,,哥白尼,,开普勒。]
双逗号是因为你将它们包含在你的数组中;删除它们,你会得到一个很好的以逗号分隔的列表。
答案 2 :(得分:3)
所以在你的for循环中会是这样的:
for(i=0;i<genius.length;i++) {
system.out.print(genius[i]);
}
所以我会解释这是做什么的。 for循环的结构如下:
for(original value; condition for the variable to go through the for loop; what to do to variable at end of for loop)
所以你从i = 0开始并填充条件:i小于genius.length(genius.length给出数组的长度,在这种情况下为4)。所以它会通过循环和打印天才[i](这将是天才[0])因为i = 0。然后它会添加一个i(i ++)。
它会再次循环,因为i = 1填充条件i小于genius.length .....等等......
它会转到i = 4并停止。你可能会想,天才怎么样[4]?那么数组数据就像这样命名为1st = arrayname [0],2nd = arrayname [1] .....所以第四个将是天才[3]。因此,当i = 4时,它会停止并打印出来。
您可以通过替换来更改其打印方式 system.out.print(genius [i] +“,”); 这将在每个之后加上逗号和空格。
希望它有所帮助,祝你好运。
答案 3 :(得分:2)
你需要一个循环:
for(String gen : genius)
{
System.out.print(gen);
}
每个对象都有一个toString()
方法,就是你所看到的,字符串数组的toString。
答案 4 :(得分:2)
使用增强型for循环进行迭代,就像这样
for(String str:genius){
System.out.println(str)
}
答案 5 :(得分:1)
您需要遍历数组(例如,使用for
循环)并分别打印每个值。
如果您尝试打印数组,它将打印有关您不会感兴趣的对象的信息。