为什么我们需要将 toString 方法与 stringbuilder 一起使用
Why do we need to use toString method with stringbuilder
这里第6行和第8行有什么区别?它们都打印相同的 string.Why do we need to use toString with StringBuilder.
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) calls string.valueOf(Object) 调用对象的 toString()
方法,然后打印出来。
System.out.println(s)
和 System.out.println(s.toString())
具有相同的输出(除非 s
是 null
,在这种情况下后者会抛出异常)。
您直接调用 s.toString()
的原因是从 StringBuilder 获取当前的 "built" 值作为 string
,这样您就可以将它传递给需要 [=] 的其他代码16=]。如果您要调用的代码采用 StringBuilder
,您可以只传递 s
,但是被调用的代码可以修改您的值(它们不能使用 string
,因为它是不可变数据类型)。
System.out.println 可以打印出字符数组(第 6 行)
s.toString() 用于实际将 stringbuilder 内容放入字符串中。在你的代码中,你没有将它设置为字符串变量,所以什么都不会发生......所以在第 8 行,字符数组从你的字符串构建器的内容中再次打印出来。
如果你添加
字符串 str = s.toString();
System.out.println(str);
然后字符串将打印由 stringbuilder 生成的字符串变量。
StringBuilder 需要 toString() 将可变字符序列转换为字符串。
所以从技术上讲,要从方法 returning String 中 return StringBuilder obj,您必须使用 toString() 将 StringBuilder 转换为 String。
你也可以在没有方法 toString() 的情况下 sysout StringBuilder obj 来直接获取值
这里第6行和第8行有什么区别?它们都打印相同的 string.Why do we need to use toString with StringBuilder.
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) calls string.valueOf(Object) 调用对象的 toString()
方法,然后打印出来。
System.out.println(s)
和 System.out.println(s.toString())
具有相同的输出(除非 s
是 null
,在这种情况下后者会抛出异常)。
您直接调用 s.toString()
的原因是从 StringBuilder 获取当前的 "built" 值作为 string
,这样您就可以将它传递给需要 [=] 的其他代码16=]。如果您要调用的代码采用 StringBuilder
,您可以只传递 s
,但是被调用的代码可以修改您的值(它们不能使用 string
,因为它是不可变数据类型)。
System.out.println 可以打印出字符数组(第 6 行) s.toString() 用于实际将 stringbuilder 内容放入字符串中。在你的代码中,你没有将它设置为字符串变量,所以什么都不会发生......所以在第 8 行,字符数组从你的字符串构建器的内容中再次打印出来。
如果你添加 字符串 str = s.toString(); System.out.println(str);
然后字符串将打印由 stringbuilder 生成的字符串变量。
StringBuilder 需要 toString() 将可变字符序列转换为字符串。
所以从技术上讲,要从方法 returning String 中 return StringBuilder obj,您必须使用 toString() 将 StringBuilder 转换为 String。
你也可以在没有方法 toString() 的情况下 sysout StringBuilder obj 来直接获取值