toString()是个方法,来自所有类的基类——Object。
Object把toString()的返回内容定义为“<类名>+'@'+<本实例的哈希吗>”的形式。
有的类重写了toString(),比如所有的包装类和String,还有所有的集合类,以让它们的实例打印出更有意义的内容。
你可以为你的Person类重写toString()方法;如果你没有重写,那么当需要调用toString(),就使用超类中的定义。这里的超类是Object,所以打印出你看到的内容。
Object把toString()的返回内容定义为“<类名>+'@'+<本实例的哈希吗>”的形式。
有的类重写了toString(),比如所有的包装类和String,还有所有的集合类,以让它们的实例打印出更有意义的内容。
你可以为你的Person类重写toString()方法;如果你没有重写,那么当需要调用toString(),就使用超类中的定义。这里的超类是Object,所以打印出你看到的内容。
username存进去的是个什么东西?是对象名吗?StringBuffer不是说是存放字符串的吗?难道username.append(person);
存进去的是“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
username.append(person.toString());
public StringBuffer append(Object obj)
追加 Object 参数的字符串表示形式。
参数将被转换成字符串,就好象使用了 String.valueOf 方法一样。然后,将所得字符串中的字符追加到此序列。
StringBuffer username=new StringBuffer();
username.append(person.toString());
StringBuffer的append(Object obj)方法,实质是调用了String.valueOf(obj)。而String.valueOf(Object obj)方法,实质是调用了Object.toString()方法。
这个方法比较特殊,如果是直接输出对象,比如System.out.print(a) 编译器将自动调用a对象的toString()方法,等同于System.out.print(a.toString())
所以你可以在a对象的所在类(比如A类)里重写toString()方法,一般用作类A的数据成员的输出