2011-08-11 47 views

回答

5

你會發現,

System.out.println("Your answer is: " + answer); 

作品! :)

+0

有人爲此降低了我:) ..大聲笑 –

+0

你回答了他們知道的唯一答案...大聲笑 – 2011-08-11 10:43:32

+0

@dj無論如何OP想要回答:) –

1

System.out.println("Your answer is: " + answer);應該工作。

請注意,如果answer指向一個對象(即不是原語),則隱式調用toString()方法。 基元轉換爲它們的字符串表示形式。 基元被相應的包裝類包裝(見下面我的評論),其中toString()被調用。儘管如此,在基元的情況下,您不必擔心這種情況,因爲包裝程序會以預期的方式覆蓋toString()(原始int i = 100將導致打印100)。

對於String返回字符串本身的對象,但對於可能只是類名和內存地址的任意對象。

例子:

mypackage.Answer answer = new mypackage.Answer("yes"); 
System.out.println("Your answer is: " + answer); 

這可能只是打印以下,如果Answer不會覆蓋toString()

Your answer is: [email protected] 

重寫toString()這樣的:

class Answer { 
    private String text; 

    Answer(String t) { 
    text = t; 
    } 

    public String toString() { 
    return text; 
    } 
} 

隨後將導致:

Your answer is: yes 
+1

它與原始作品很好... AutoBoxing :) – ngesh

+0

@ntc例如,AFAIK自動裝箱不涉及'「數字是」+ 1「。在這種情況下,+運算符只會將1轉換爲一個字符串,而不執行「new Integer(1).toString()'。 – Thomas

+0

讓我問這個問題,然後......但在那時我會同意你的 – ngesh

1

代碼的第一行沒有問題,因爲您連接字符串並輸出它。

但是第二行將無效(如果縮進的結果與第一行相同),則將名稱字符串對象作爲參數傳遞給println方法。你可以使用類似String.format的東西,它允許你使用printf風格的字符串(如果我可以稱之爲...)。

例子:

String.format("Blah %d Blah", i) 

所以在你的榜樣:

System.out.println(String.format("Your answer is: %s", answer)); 

沒有測試此代碼,寫了我的頭頂它。

2
System.out.println("Your answer is: " + answer); 

如果你問這怎麼可能,

其因答案對象toString()方法。因爲我們知道println()需要String,並且當它首先看到一個字符串時,它會調用toString()下一個變量/ Object的方法並使其成爲String。如果這是int值,它確實AutoBoxing並將其轉換爲Integer()對象並調用它的toString()方法

相關問題