Mah*_*pta 1 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
Run Code Online (Sandbox Code Playgroud)
第6行和第8行之间没有什么不同。
PrintStream.println(Object)调用string.valueOf(Object),后者调用对象的toString()方法,并被打印。
System.out.println(s)并System.out.println(s.toString())具有相同的输出(除非s是null,在这种情况下后者会引发异常)。
您s.toString()直接调用的原因是从StringBuilder获得当前的“内置”值,string因此您可以将其传递给需要a的其他代码string。如果您要调用的代码采用a StringBuilder,则可以传递s,但是被调用的代码具有修改您的值的能力(它们不能使用,string因为它是不可变的数据类型)。