2017-07-15 119 views
1
String s="StackOverflow is heaven"; 
char []c=new Char[100]; 

c=s.toCharArray(); 

System.out.println(c); 
System.out.println("Output="+c); 

Output is :- StackOverflow is heaven 
       Output=[[email protected] 

爲什麼B/W輸出有差別?請解釋它Java String array Output Difference

+0

你得到第二印刷中,印刷的地址。但我知道爲什麼。你首先打印正確嗎?它不是println(s)? – sgerodes

+0

當您打印數組時,它將打印數組的地址。不是它的內容。如果你想讓char []成爲一個字符串,使用'new string(c)'。 – Kajal

+3

我不認爲這個問題是重複的。 OP可能知道如何打印數組,他只是想知道爲什麼在第二種情況下打印參考。 –

回答

4

情況1:

overloaded println這需要char[]方法處理您的陣列內部和打印的字符串。請注意0​​對於任何其他類型的基元數組都沒有這種重載方法。

情況2:

您連接具有字符串數組,因此,即使由處理的println,步驟1本身,您的字符數組toString()被調用並被附加到字符串,打印輸出爲一個字符串最終輸出之前。

所以,如果你擴大你的第二個聲明中,處理看起來像

System.out.println("Output="+c.toString()); 
System.out.println("Output="+ "[[email protected]"); 
System.out.println("Output=[[email protected]"); 
+0

當toString()方法被調用時,它附加字符串,但最終的答案是打印字符串的地址爲char Array []我不明白爲什麼? –

+0

@ManishSharma「address-of ...」mumbo-jumbo就是''toString()'爲'char'數組所做的:-(它可能繼承了Object的默認行爲...... –