本帖最后由 赵志勇 于 2012-7-1 11:46 编辑
所有对象都有toString()这个方法,因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”
例如:- 1.public class PrintObject{
- 2. public static void main(String args[]){
- 3. Person p = new Person("十三层");
- 4. System.out.println(p.toString()); //跟p.toString()效果一样
- 5. }
- 6.}
- 7.class Person {
- 8. private String name;
- 9. public Person(String name){
- 10. this.name = name;
- 11. }
- 12. public void info(){
- 13. System.out.println("此人名为:" + name);
- 14. }
- 15.}
复制代码 输出:
String.Person@c17164
当楼主运行上面程序时,可能看到不同的输出结果:@符号后的6位16进制数字可能发生改变
但这个输出结果是怎么来的呢?System.out.println方法只能在控制台输出字符串.当使用该方法输出
Person对象时,实际上输出的是Person对象的toString()方法的返回值,也就是说,下面代码结果完全一样:
System.out.println(p);
System.out.println(p.toString());
这就证明了最上边的总结
不仅如此,所有Java对象都可以和字符串进行连接运算,当Java对象和字符串进行连接运算时,
系统自动调用Java对象toString方法的返回值和字符串进行连接运算,即下面两行代码的结果也完全
相同:
String pStr = p + "";
String pstr = p.toString() + "";
toString方法是一个非常特殊的方法,它是一个“自我描述”方法,该方法通常用于实现这样一个
功能:当程序员直接打印该对象时,系统将会输出该对象的“自我描述”信息,用以告诉外界该对象
具有的状态信息。
|