黑马程序员技术交流社区

标题: 当我们用System.out.print()打印一个对象时,打印出来的是什么东西? [打印本页]

作者: 张校云    时间: 2011-9-29 22:14
标题: 当我们用System.out.print()打印一个对象时,打印出来的是什么东西?
当我们用System.out.println()打印一个对象时,输出的是什么?是这个对象的toString()方法返回的字符串吗?为什么会这样?
作者: 丁林    时间: 2011-9-29 22:23
是    println()方法内部会自动调用对象(对象可以是任何类型)的toString()方法,然后打印出字符串的内容
[ 本帖最后由 丁林 于 2011-09-29  22:28 编辑 ]
作者: 匿名    时间: 2011-9-29 22:40
按顺序来一步一步的分析,不能觉得简单就不认真,~~打开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())。楼主你现在明白了么,?
作者: 匿名    时间: 2011-9-29 22:46
首先system.out返回的是个PrintStream类型,然后调用PrintStream的println(object)方法。api中该方法是这样定义的:
      public void println(Object x)打印 Object,然后终止该行。此方法首先调用 String.valueOf(x) 获取打印对象的字符串值,然后的行为如同先调用 print(String) 再调用 println() 一样。
作者: 匿名    时间: 2011-9-30 19:55
楼主现在非常明白了,谢谢大家




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2