2015-10-12 24 views
-2

可以任何人解釋我如何toString()方法在下面的程序工作?在下面的程序中,我沒有調用toString()方法。但是當我創建一個對象時如何打印消息可以任何一個解釋我是新來的java。任何機構可以解釋我如何在以下程序中的toString()方法工作?

class Inner 
    { 
     public String toString() 
     { 
     return "Hai this is java"; 
     } 
    } 

class Main 
{ 
    public static void main(String [] java) 
    { 
     System.out.println(new Inner()); 
    } 
} 

回答

0

打印命令將始終打印作爲參數傳遞的對象的toString方法返回的值。

要麼你重寫它,就像你做的那樣,然後返回,否則它將使用從Object類繼承的默認實現。

1

System.out返回一個PrintStream實例。 PrintStream有一個public void println(Object x)方法,該方法調用String.valueOf(x)傳遞給它的ObjectString.valueOf(x)在傳遞給它非空引用時調用對象的toString()方法。

+0

這個問題是[這篇文章]的總重複(http://stackoverflow.com/questions/29318996/the-connection-between-system-out-println-and-tostring-in-java),和你應該關閉它。 –

+0

public void println(Object x){s}} String s = String.valueOf(x); 同步(本){ print(s); newLine(); } } //我理解它是如何工作的,但爲什麼同步在這裏使用 – CSiva

+0

這裏什麼是同步(this)? – CSiva

相關問題