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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王少岩 中级黑马   /  2012-8-15 18:24  /  1642 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

System.out.println()在程序中很常见,但是它的原理说实在的不是很清楚,在这我写一下自己的理解希望大家多多指教啊

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

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

2 个回复

倒序浏览

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 19:07
PrintStream(System.out):
    public void println(Object x) {
        String s = String.valueOf(x);

ok,我猜的也基本是这个意思,看来看看源码还是很有必要啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马