{
List list= new ArrayList();
list.add("one");
list.add("second");
System.out.println(list);
}
如何像在 print 语句中一样使用对象“列表”?难道我们不需要使用对象来访问打印列表的方法吗?
prinln(someObject)
将打印出在someObject
'stoString()
方法中实现的任何内容。
您可以使用 toString() (应该)为所有对象实现:
System.out.println(list.toString())
请注意,您不应该将返回的字符串用作您可以实际解析的任何内容;它真的是为了视觉表现。它也不需要唯一地表示对象。
当你写
System.out.println(list)
实际上,您正在toString()
隐式使用该方法。
查看您的问题和评论,我认为您的困惑最终源于您不确定打印的工作原理。一般来说,在这种情况下,我建议获取 JDK 源代码并简单地查看内部。
在这种情况下,我们将首先进入System
班级并检查out
成员(因为println
被调用了System.out
):
public final class System {
...
public final static PrintStream out = null;
既然我们现在知道那out
是 a 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
using String.valueOf(Object)
。让我们看看这个方法:
public final class String {
...
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
所以现在我们知道你List
的toString()
方法是用来生成输出的。正如其他人指出的那样,它被覆盖ArrayList
以提供您看到的输出。
当我们将任何对象传递给 println() 方法时,它会隐式调用该对象的toString()方法。所以,实际执行的是
System.out.println( list.toString() );
ArrayList 继承自 java.util.AbstractCollection 类,并且该类具有toString()方法。因此,在您的情况下,应该执行 toString() 。
该 toString() 方法返回此集合的字符串表示形式。字符串表示由集合元素的列表组成,按其迭代器返回的顺序排列,用方括号 ("[]") 括起来。相邻元素由字符“、”(逗号和空格)分隔。通过 String.valueOf(Object) 将元素转换为字符串。
返回此集合的字符串表示形式。字符串表示由集合元素的列表组成,按其迭代器返回的顺序排列,用方括号 ("[]") 括起来。相邻元素由字符“、”(逗号和空格)分隔。通过 String.valueOf(Object) 将元素转换为字符串。
在这里您正在创建 List 接口。因此它也允许在列表中添加重复值。我们也可以直接打印对象,如 System.out.println(obj); 在 List 类内部,toString 方法被覆盖,因此它将打印其所有内容而不是对象的地址。
System.out.println(Arrays.toString(myList.toArray()));
您可以遍历列表中的所有项目以将它们打印出来。您可以使用 for 循环的 while 循环来执行此操作。
while (list.hasNext) {
System.out.println((String) list.next());
}
for(String i in list){
System.out.println(i) ;
不知道这是否是你要找的,但它是一个选项。
之所以可以这样使用,是因为 List 类继承了 Object 类,而 Object 类有 toString() 方法,这意味着每个对象都可以变成一个 String。
直接打印列表将给出列表的字符串表示。如果要访问列表中的对象,则需要对集合使用迭代器或循环或高级 for 循环。例如
for(String s : list){
System.out.println(s);
}
好吧,您可以研究并尝试所有列表方法来修改它。例如添加、删除。
此外,如果您正在打印一个对象,则隐式调用 toString() 方法。
你需要 toString() 方法。当您打印 object Reference 时,默认情况下会调用 toString() 方法。如果您默认查看 toString() 方法,它会打印
getClass().getName() + '@' + Integer.toHexString(hashCode())
现在根据您的要求,您可以覆盖它以打印列表中的值(字符串类也覆盖它)