Java中的StringBuilder

OPK*_*OPK -2 java stringbuilder

快速提问:

public class AppendStringBuilder {

    public static void main(String args[]){
        StringBuilder sb1 = new StringBuilder();
        sb1.append("java");
        sb1.append(new Person("Oracle"));
        System.out.println(sb1);
    }
}

package hello;
public class Person {

    String name;
    Person(String str){
        name = str;
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:javahello.Person@2c538cc2

这背后的原因?不打印JavaOracle

Tob*_*ias 12

你需要toString在课堂上实现Person:

public class Person {

    String name;
    Person(String str){
        name = str;
    }

    @Override
    public String toString() {
      return name;
    }

}
Run Code Online (Sandbox Code Playgroud)

toString必须返回对象的String表示形式.实用程序方法,例如append调用toString对象以检索其文本表示.

来自文档:

返回对象的字符串表示形式.通常,toString方法返回一个"文本表示"此对象的字符串.结果应该是一个简洁但信息丰富的表示,便于人们阅读.建议所有子类都重写此方法.

类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符"@"和对象的哈希码的无符号十六进制表示组成.换句话说,此方法返回一个等于值的字符串:

getClass().getName() + '@' + Integer.toHexString(hashCode())
Run Code Online (Sandbox Code Playgroud)