當使用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,]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM