为什么我们需要在stringbuilder中使用toString方法

时间:2017-10-12 15:21:48

标签: java string stringbuilder

这里第6行和第8行有什么区别?它们都打印相同的字符串。为什么我们需要在StringBuilder中使用toString。

     StringBuilder s = new StringBuilder("hello");//line1
     System.out.println(s);//line2
     s.append("hi");//line3
     System.out.println(s);
     s.append("okk");
     System.out.println(s);//line 6
     s.toString();
     System.out.println(s);//line 8

3 个答案:

答案 0 :(得分:5)

第6行和第8行之间没有什么不同。

PrintStream.println(Object)调用string.valueOf(Object)调用对象的toString()方法,然后打印出来。

System.out.println(s)System.out.println(s.toString())具有相同的输出(除非snull,在这种情况下,后者会抛出异常。)

您直接致电s.toString()的原因是为了获得当前的"内置" StringBuilder中的值为string,因此您可以将其传递给期望string的其他代码。如果您要调用的代码采用StringBuilder,则可以通过s,但调用代码可以修改您的值(他们可以使用string,因为它是一种不可变的数据类型。)

答案 1 :(得分:0)

System.out.println可以打印出字符数组(第6行) s.toString()用于将stringbuilder内容实际放入字符串中。在你的代码中,你没有将它设置为字符串变量,所以什么都不会发生...所以在第8行,字符数组会再次从字符串构建器的内容中打印出来。

如果你添加 string str = s.toString(); 的System.out.println(STR);

然后字符串将打印由stringbuilder生成的字符串变量。

答案 2 :(得分:0)

StringBuilder需要toString()才能将可变的字符序列转换为String。

从技术上讲,要从返回String的方法返回StringBuilder obj,必须使用toString()将StringBuilder转换为String。

您还可以对不带toString()方法的StringBuilder obj进行系统设置,以直接获取值