Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的StringBuilder_Java_Stringbuilder - Fatal编程技术网

Java中的StringBuilder

Java中的StringBuilder,java,stringbuilder,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); } } pac

快速问题:

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;
    }
}
输出: 你好。Person@2c538cc2


这背后的原因是什么?不打印JavaOracle

您需要在类
Person
中实现
toString

public class Person {

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

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

}
toString
必须返回对象的字符串表示形式。诸如
append
之类的实用方法在对象上调用
toString
,以检索其文本表示

发件人:

返回对象的字符串表示形式。总的来说 toString方法返回一个字符串,该字符串“以文本形式表示”此 对象结果应该是简洁但信息丰富的表示 这对一个人来说很容易阅读。建议所有 子类重写此方法

类对象的toString方法返回一个字符串,该字符串由 对象作为实例的类的名称,at符号 字符“@”和哈希的无符号十六进制表示形式 对象的代码。换句话说,此方法返回一个等于 价值:

getClass().getName() + '@' + Integer.toHexString(hashCode())

将toString方法添加到Person类

package hello;
public class Person {

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

    public String toString() {
      return name;
    }
}
sb1.append(新人(“甲骨文”)

结果变成

sb1.append(newperson(“Oracle”).toString())

由于您的
Person
类不重写
Object
类中的
toString()
方法,因此它使用默认实现,即打印
getClass().getName()+'@'+Integer.toHexString(hashCode())

要打印
javaOracle
,需要将
toString()
方法重写为

public class Person {

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

    public String toString() {
        return name;
    }
}

为什么它要打印JavaOracle