我打印了一下stack对象,结果出乎我意料了,为什么打印的结果会有中括号[]呢?
java中的栈跟C语言中类似么?或者是用数组实现的?Java

解决方案 »

  1.   

    看源码:
    class Stack<E> extends Vector<E>
    public class Vector<E>extends AbstractList<E>
    public abstract class AbstractList<E> extends AbstractCollection<E>//AbstractCollection:
     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(", ");
    }
        }
      

  2.   

    System.out.println调用对象toString方法打印输出,因此输出结果取决于toString方法的实现
      

  3.   

    顶一楼,read the fucking source!
      

  4.   

    看源代码:
    java.util.Stack 继承自 Vector:
        public class Stack<E> extends Vector<E> { }
    java.util.Vector 中:
        protected Object[] elementData; //放元素的elementData就是一个object的数组
      

  5.   

    thank you~~就是这个~之前没有配到源码~
      

  6.   

    toString()多是封装的一些结果!