繁体   English   中英

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

[英]Why do we need to use toString method with 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

第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因为它是不可变的数据类型)。

System.out.println可以打印出字符数组(第6行),s.toString()用于将stringbuilder内容实际放置到字符串中。 在您的代码中,您没有将其设置为字符串变量,因此不会发生任何事情……因此,在第8行中,从字符串构建器的内容中再次打印了字符数组。

如果添加字符串str = s.toString(); System.out.println(str);

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM