println如何打印对象

时间:2013-06-13 08:47:23

标签: java list

{
  List list= new ArrayList();
  list.add("one");
  list.add("second");
  System.out.println(list);
}

如何使用对象“list”,就像在print语句中一样?我们不需要使用该对象来访问打印列表的方法吗?

11 个答案:

答案 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;

由于我们现在知道outPrintStream,让我们查看该课程:

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()));