zoukankan      html  css  js  c++  java
  • 当使用System,out.println()打印一个对象是自动调用toString方法

    在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,]

  • 相关阅读:
    babel缓存 非常实用(8)
    source-map 非常实用(7)
    webpack -HMR-非常实用(6)
    eslint 语法检查(5)
    对css 的处理(4)
    python之再学习----简单的字符串
    windows下安装django的具体步骤和各种问题
    Linux常用命令
    转:程序中得到SVN的版本号
    vue实战(1):准备与资料整理
  • 原文地址:https://www.cnblogs.com/Evil-Rebe/p/4869687.html
Copyright © 2011-2022 走看看