为什么在使用toString方法后仍然得到[]?

时间:2014-12-19 21:08:32

标签: java stack tostring

这是我的代码:

public class StackStudy{
    public static void main(String[] args){
        Stack<String> st = new Stack<String>();
        st.push("hi");
        st.push("bye");
        st.push("awful");
        System.out.println(st.toString());
    }
}

和控制台打印出来:

[hi, bye, awful]

我以为使用toString将摆脱[],为什么它仍然存在?

编辑: 如果toString不是摆脱[]的正确方法,那么正确的方法是什么?

3 个答案:

答案 0 :(得分:2)

因为toString()(或可能Vector)的AbstractCollection方法包含括号(而Stack继承了toString())。您可以通过采用像

这样的子字符串来删除它们
String str = st.toString();
System.out.println(str.substring(1, str.length() - 1));

答案 1 :(得分:0)

重写toString()可让您完全控制返回的内容。因此,您可以跳过括号。但是,您只调用了toString()方法(实际上它也是System.out.println()实际上正在执行的操作。因此,结果与预期一致。

答案 2 :(得分:0)

以下代码可以解决问题。

public class StackStudy{
    public static void main(String[] args){
        Stack<String> st = new Stack<String>();
        st.push("hi");
        st.push("bye");
        st.push("awful");
        String stackAsString = st.toString();
        System.out.println(stackAsString.substring(1, stackAsString.length() - 1));
    }
 }