黑马程序员技术交流社区

标题: 对于System.out.println()的理解 [打印本页]

作者: 王少岩    时间: 2012-8-15 18:24
标题: 对于System.out.println()的理解
System.out.println()在程序中很常见,但是它的原理说实在的不是很清楚,在这我写一下自己的理解希望大家多多指教啊

当要打印的内容是对象时,
如果该对象所属的类覆盖了toString()方法,则调用覆盖后的toString()方法,返回该toString()的返回结果,
如果该对象所属的类未覆盖toString()方法,则调用Object类的toString()方法,打印出该对象的地址值。

当要打印的内容是基本类型时,
会对基本类型进行String.valueOf(基本类型数据)操作,最后调用String类的toString()方法,打印出该toString()的返回结果。


作者: 李知伦    时间: 2012-8-15 19:07

PrintStream(System.out):
    public void println(Object x) {
        String s = String.valueOf(x);
        synchronized (this) {
            print(s);
            newLine();
        }
    }

String:
    public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }

Object:
    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
看看原码就懂了
作者: 王少岩    时间: 2012-8-15 21:01
李知伦 发表于 2012-8-15 19:07
PrintStream(System.out):
    public void println(Object x) {
        String s = String.valueOf(x);

ok,我猜的也基本是这个意思,看来看看源码还是很有必要啊




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