您的位置:首页 > 其它

为什么输出对象时,调用toString()?

2017-09-13 21:59 169 查看
在Java中,所有的对象都是继承自Object,自然继承了toString方法,在当使用System,out.println()里面为一个对象的引用时,自动调用toString方法讲对象打印出来。如果重写了tostring方法则调用重写的toString 方法。

因为System.out.println()的这个方法源码中调用了String.valueOf(Objec o),

public void println(Object x) {

        String s = String.valueOf(x);

        synchronized (this) {

            print(s);

            newLine();

        }

    }

而String.valueOf(x)的源码就是去调用该对象的toString()方法,源码如下:

public static String valueOf(Object obj) {

        return (obj == null) ? "null" : obj.toString();

    }

  

例如一下例子(同事注意String  StringBuilder 以及StringBuffer的区别。以下使用的是StringBuilder)。

import java.util.Random;

public class UsingStringBuilder {

public static Random random = new Random(47);

public String toString() {

StringBuilder result = new StringBuilder("[");

for(int i=0;i<25;i++) {

result.append(random.nextInt(100));

result.append(",");

}

result.delete(result.length()-2, result.length());

result.append("]");

return result.toString();

}

public static void main(String[] args) {

UsingStringBuilder u = new UsingStringBuilder();

System.out.println(u);

}

}

 输出结果:[58,55,93,61,61,29,68,0,22,7,88,28,51,89,9,78,98,61,20,58,16,40,11,22,]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐