A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邓超军 中级黑马   /  2012-7-1 09:14  /  1640 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在看一个回帖是。看到“打印对象时,会自动调用该对象的toString()方法。”这样一句话。真的像这句话中说的那样吗?请高手指点。

3 个回复

倒序浏览
本帖最后由 赵志勇 于 2012-7-1 11:46 编辑

所有对象都有toString()这个方法,因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”
例如:
  1. 1.public class PrintObject{  
  2. 2.    public static void main(String args[]){  
  3. 3.   Person p = new Person("十三层");  
  4. 4.   System.out.println(p.toString());  //跟p.toString()效果一样  
  5. 5.    }  
  6. 6.}  
  7. 7.class Person {  
  8. 8.    private String name;  
  9. 9.    public Person(String name){  
  10. 10.        this.name = name;  
  11. 11.    }  
  12. 12.    public void info(){  
  13. 13.        System.out.println("此人名为:" + name);  
  14. 14.    }     
  15. 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方法是一个非常特殊的方法,它是一个“自我描述”方法,该方法通常用于实现这样一个
功能:当程序员直接打印该对象时,系统将会输出该对象的“自我描述”信息,用以告诉外界该对象
具有的状态信息。
回复 使用道具 举报
赵志勇 发表于 2012-7-1 09:26
所有对象都有toString()这个方法,因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所 ...

谢谢你,我懂了。还有一个问题,就是刚刚看张老师的视频,他在重写toString方法是,在前面加了一个@override,是什么意思?
回复 使用道具 举报
这是张老师高薪技术中注解所涉及的
注解的语法比较简单,除了@符号的使用以外,它基本上与java的固有语法一致,java内置了三种

注解,定义在java.lang包中。

      @Override  //表示当前方法是覆盖父类的方法。

      @Deprecated//  表示当前元素是不赞成使用的。

      @SuppressWarnings //表示关闭一些不当的编译器警告信息。
等你看了完视频后就很明白了。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马