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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

当我们用System.out.println()打印一个对象时,输出的是什么?是这个对象的toString()方法返回的字符串吗?为什么会这样?

4 个回复

倒序浏览
是    println()方法内部会自动调用对象(对象可以是任何类型)的toString()方法,然后打印出字符串的内容
[ 本帖最后由 丁林 于 2011-09-29  22:28 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-29 22:40:45
藤椅
按顺序来一步一步的分析,不能觉得简单就不认真,~~打开API找到System.out,这个对象是printStream类,找到println(object obj),打印obj,然后终止改行,此方法首先调用String.valueof(x)获取打印对象字符串的值,如果参数为null,则字符串等于“null”,否则返回obj.toString()的值。然后了解到这个程度以后,我们再来找到object的toString方法,API如是说:Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。表达式:getClass().getName() + '@' + Integer.toHexString(hashCode())。楼主你现在明白了么,?

评分

参与人数 1技术分 +2 收起 理由
wangfayin + 2 回答的很好!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-29 22:46:02
板凳
首先system.out返回的是个PrintStream类型,然后调用PrintStream的println(object)方法。api中该方法是这样定义的:
      public void println(Object x)打印 Object,然后终止该行。此方法首先调用 String.valueOf(x) 获取打印对象的字符串值,然后的行为如同先调用 print(String) 再调用 println() 一样。

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-30 19:55:03
报纸
楼主现在非常明白了,谢谢大家
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马