欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

关于java集合的toString方法源码分析,javatostring

来源: javaer 分享于  点击 8557 次 点评:116

关于java集合的toString方法源码分析,javatostring


在java中,大多数输出一个实例对象,就会输出它在堆空间的地址值.

但是集合输出的是字符串,以下是探究:

Collection<String> c = new ArrayList<String>();
c.add("hello");
c.add("world");
c.add("java");

System.out.println(c);

它的输出为:[hello, world, java]

为什么c输出的不是地址值呢?
A:Collection<String> c = new ArrayList<String>();
这是多态,所以输出c的toString()方法,其实是输出ArrayList的toString()
B:看ArrayList的toString()
而我们在ArrayList里面却没有发现toString()。这时就可以去它的父类中查看.
C:最终在它的顶层的类AbstractCollection<E>中找到了toString()的方法源码
 Iterator<E> it = iterator();  //集合本身调用迭代器方法,得到集合迭代器
        if (! it.hasNext())
            return "[]";
        StringBuilder sb = new StringBuilder();
        sb.append('[');
        for (;;) {
            E e = it.next();     //e=hello,world,java
            sb.append(e == this ? "(this Collection)" : e);
            if (! it.hasNext())
                return sb.append(']').toString();
            sb.append(',').append(' ');
        }
        
        其实,只是重写了toString()方法而已.

相关文章

    暂无相关文章

用户点评