黑马程序员技术交流社区
标题:
关于打印对象问题
[打印本页]
作者:
吴通
时间:
2012-9-6 20:06
标题:
关于打印对象问题
集合和数组:
import java.util.*;
class StringDemo
{
public static void main(String[] args)
{
/*
StringBuffer sbf=new StringBuffer();
sbf.append("abc");
sbf.append("345");
System.out.print(
sbf.toString
()
); //
换成sbf打印结果一样啊?
*/
ArrayList al=new ArrayList();
al.add("java01 java02 java03");
System.out.println(al);
/*
int[] arr={3,4,5};
System.out.println(arr);
*/
}
}
File类
import java.io.*;
class FileDemo
{
public static void main(String[] args)
{
File f=new File("a.txt");
sop(f);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
上面两种情况都是类,怎么也能打印?
还有集合直接就能打印,为什么还要有遍历呢?
作者:
全海波
时间:
2012-9-6 20:10
o(︶︿︶)o 唉,不多解释!
作者:
武庆东
时间:
2012-9-6 20:10
思考一下!
作者:
孙沛
时间:
2012-9-6 20:33
ArrayList重写了toString方法。,它是重写了AbstractCollection类的toString方法。你可以去查查API。
源码是这样的:
public String toString() {
Iterator<E> i = iterator();
if (! i.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = i.next();
sb.append(e == this ? "(this Collection)" : e);
if (! i.hasNext())
return sb.append(']').toString();
sb.append(", ");
}
}
作者:
张飞年
时间:
2012-9-6 20:58
说明一下,类能直接打印其实在是隐式调用自己的 类.toString() 方法,数组输出当前数组名的Hashcode值,集合输出其中的元素,File输出它指定的地址,这里面的核心动作就是 toString() 方法覆写,每种类都 有自己的toString实现方法,所以才会出现上面的输出情形。我们也常用toString方法来实现我们自定义的内容。
集合能输出不代表它能操作啊,对于集合输出只是一个方式,它还有增删等好多方法呢,有个形象的比较就是for的高级循环,它同样可以遍历输出,但不能对其中的元素进行操作。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2