问题描述:
在创建自定义StringBuffer的过程中,使用System.out.println()方法打印MyStringBuffer对象时,输出character.MyStringBuffer@15db9742
。包含包名,类名并且@一串数字。以下是源代码和输出结果:
public static void main(String[] args) {
MyStringBuffer msb=new MyStringBuffer("love");
msb.reverse();
System.out.println(msb);
}
output:
解决方案:
参考了几篇文章,得出解决的办法是重写toString()方法。以下是示例,你可根据自己的要求重写自己的toString()方法。
public String toString() {
char[] realValue=new char[length];
System.arraycopy(value, 0, realValue, 0, length);
return new String(realValue);
}
output:
是所要求的“love”的反转,问题解决。
总结:
System.out.println()方法打印输出的character.MyStringBuffer@15db9742
是该对象实现类的”类名+@+hashCode“值。要实现自我描述,需要重写toString()方法。
参考博客: