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
?