toString()是个方法,来自所有类的基类——Object。
Object把toString()的返回内容定义为“<类名>+'@'+<本实例的哈希吗>”的形式。
有的类重写了toString(),比如所有的包装类和String,还有所有的集合类,以让它们的实例打印出更有意义的内容。
你可以为你的Person类重写toString()方法;如果你没有重写,那么当需要调用toString(),就使用超类中的定义。这里的超类是Object,所以打印出你看到的内容。

解决方案 »

  1.   

    1楼的说的很清楚了,toString()是Object的方法,当打印时System.out.println()时会调用这个方法,你可以重写它
      

  2.   

    那么在上面的例子中,username.append(person);
    username存进去的是个什么东西?是对象名吗?StringBuffer不是说是存放字符串的吗?难道username.append(person);
    存进去的是“person”这个字符串???
      

  3.   

     你可以实现Person的toString()方法的啊!比如:public class Person {
      private String name;
      private int age;
      public String toString(){
          return name+","+age;
      }  public static void main(String[] args){
      Person person=new Person();
      person.name="余锐";
      person.age=24;
      StringBuffer username=new StringBuffer();
      username.append(person);
      System.out.println(username.toString());
      } 实现后打印的就是   余锐,24
      

  4.   

    StringBuffer的append(Object obj)方法,实质是调用了String.valueOf(obj)。而String.valueOf(Object obj)方法,实质是调用了Object.toString()方法。
      

  5.   

    实际存入的是
    username.append(person.toString()); 
      

  6.   


    public StringBuffer append(Object obj)
    追加 Object 参数的字符串表示形式。 
    参数将被转换成字符串,就好象使用了 String.valueOf 方法一样。然后,将所得字符串中的字符追加到此序列。 
      

  7.   

    StringBuffer类 本身并没有重写toString()方法, 你可以为你的Person类重写toString()方法;
      

  8.   

    这个问题和StringBuffer没有关系,自己写的类,如果不写toString方法,打印出来都是这样的
      

  9.   


      StringBuffer username=new StringBuffer(); 
      username.append(person.toString()); 
      

  10.   

    别啊,都说正解.....1楼的可是要追究法律责任的啊 呵呵....
    StringBuffer的append(Object obj)方法,实质是调用了String.valueOf(obj)。而String.valueOf(Object obj)方法,实质是调用了Object.toString()方法。
      

  11.   

    toString()来自根基类Object,是返回对象的字符串表示。
    这个方法比较特殊,如果是直接输出对象,比如System.out.print(a) 编译器将自动调用a对象的toString()方法,等同于System.out.print(a.toString())
    所以你可以在a对象的所在类(比如A类)里重写toString()方法,一般用作类A的数据成员的输出