{
List list= new ArrayList();
list.add("one");
list.add("second");
System.out.println(list);
}
如何使用对象“list”,就像在print语句中一样?我们不需要使用该对象来访问打印列表的方法吗?
答案 0 :(得分:5)
prinln(someObject)
会打印someObject
的{{1}}方法中实现的内容。
答案 1 :(得分:2)
您可以使用(假设)toString()为所有对象实现:
System.out.println(list.toString())
请注意,您不应该将返回的字符串用作您实际可以解析的任何内容;它真的是一个视觉表现。它也不需要唯一代表对象。
写作时
System.out.println(list)
事实上,你是隐含地使用toString()
方法。
答案 2 :(得分:1)
Docs Says about toString() in Collections:
返回此集合的字符串表示形式。字符串表示由一个集合元素的列表组成,它们的迭代器返回它们的顺序,用方括号(“[]”)括起来。相邻元素由字符“,”(逗号和空格)分隔。通过String.valueOf(Object)将元素转换为字符串。
答案 3 :(得分:1)
当我们将任何对象传递给println()方法时,它将隐式调用该对象的 toString()方法。那么,实际执行的是
System.out.println( list.toString() );
ArrayList继承自java.util.AbstractCollection类,该类具有 toString()方法。因此,在您的情况下,应该执行toString()。
toString()方法返回此集合的字符串表示形式。字符串表示由一个集合元素的列表组成,它们的迭代器返回它们的顺序,用方括号(“[]”)括起来。相邻元素由字符“,”(逗号和空格)分隔。通过String.valueOf(Object)将元素转换为字符串。
答案 4 :(得分:1)
看看你的问题和评论,我认为你的困惑最终源于你不确定印刷如何运作。通常在这种情况下,我建议获取JDK源代码并简单地查看内部。
在这种情况下,我们首先转到System
课程并查看out
成员(因为在println
上调用了System.out
):
public final class System {
...
public final static PrintStream out = null;
由于我们现在知道out
是PrintStream
,让我们查看该课程:
public class PrintStream extends FilterOutputStream
implements Appendable, Closeable
{
...
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
(我们知道它正在调用此方法,因为其他println
签名与类型List
不匹配)
好的,我们看到println
使用Object
将给定的List
(在这种情况下为String
)转换为String.valueOf(Object)
。我们来看看这个方法:
public final class String {
...
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
现在我们知道您的List
toString()
方法用于生成输出。正如其他人所指出的,在ArrayList
中覆盖它以提供您看到的输出。
答案 5 :(得分:0)
它可以像这样使用,因为类List继承了Object类,而Object类有toString()方法,这意味着每个对象都可以转换为String。
答案 6 :(得分:0)
直接打印列表将给出列表的字符串表示。 如果要访问列表中的对象,则需要使用迭代器或循环或高级for循环来进行集合。 e.g。
for(String s : list){
System.out.println(s);
}
您可以学习并尝试所有列表方法来修改它。例如添加,删除。
此外,如果要打印对象,则会隐式调用toString()方法。
答案 7 :(得分:0)
您可以遍历列表中的所有项目以便将其打印出来。你可以使用for循环的while循环来做到这一点。
while (list.hasNext) {
System.out.println((String) list.next());
}
for(String i in list){
System.out.println(i) ;
} 不确定这是否是你想要的,但它是一个选项。
答案 8 :(得分:0)
哟需要toString()方法。当你打印对象Reference时,默认调用toString()方法。如果默认情况下查看toString()方法,则打印
getClass().getName() + '@' + Integer.toHexString(hashCode())
现在根据您的要求,您可以覆盖它以打印列表中的值(String Class也覆盖它)
答案 9 :(得分:0)
这里你创建了List接口。所以它也允许在列表中添加重复值。我们也可以直接打印像System.out.println(obj)这样的对象; 在List类中,重写了toString方法,以便它打印所有内容而不是对象的地址。
答案 10 :(得分:0)
的System.out.println(Arrays.toString(myList.toArray()));