我对StringBuilder有点困惑.看来当我打印一个StringBuilder时,不需要添加.toString(),因为它会自动给我一个字符串表示.但是,当我返回一个StringBuilder对象时,我必须添加.toString().真的吗?为什么?
另外,我对以下代码感到有点困惑:
package com.tutorialspoint;
import java.lang.*;
public class StringBuilderDemo {
public static void main(String[] args) {
StringBuilder str = new StringBuilder("India ");
System.out.println("string = " + str);
// append character to the StringBuilder
str.append('!');
// convert to string object and print it
System.out.println("After append = " + str.toString());
str = new StringBuilder("Hi ");
System.out.println("string = " + str);
// append integer to the StringBuilder
str.append(123);
// convert to string object and print it
System.out.println("After append = " + str.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
对于不同的println,有时这个代码使用toString,有时则不使用.为什么?我尝试删除toString,结果是一样的.是否仍然需要在println中使用toString?
非常感谢帮助新手!
将对象打印到打印流时,将打印该对象的String
表示形式,从而toString
调用该对象.
有些类会覆盖Object#toString
,其中包括StringBuilder
.
因此,明确调用toString
的StringBuilder
是不必要的.
另一方面,其他对象不会覆盖toString
.例如,数组.
当你打印一个数组时,除非使用像这样的实用程序,否则Arrays.toString
你得到的数组类会键入@
其哈希代码,而不是人类可读的内容表示.
请注意,println()打印字符串构建器,如下所示:
System.out.println(sb);
Run Code Online (Sandbox Code Playgroud)
因为sb.toString()是隐式调用的,因为它与println()调用中的任何其他对象一样.
归档时间: |
|
查看次数: |
12498 次 |
最近记录: |