2011-05-10 32 views

回答

27

append()和write()之間存在細微差異。所有這些都可以通過閱讀Javadocs來完成。暗示。 ;)

  • 寫只會採取哪些不能爲空,並返回void
  • 追加將採取哪些可以爲空,並返回作家所以它可以鏈接任何CharSequence的字符串。

寫是在CharSequence可用之前創建的舊樣式格式。

這些方法被重載,以便有一個

  • write(int)其中int被轉換爲炭。 append(char)必須是字符類型。
  • ​​需要一個char數組,沒有等價的append()。
+0

這是否意味着我應該追加使用,而不是寫?爲什麼他們不能僅僅使用CharSequence寫入來調用重載,並讓舊的寫入方法也返回寫入器呢? – Svish 2011-05-10 12:28:19

+3

@Svish,這會破壞向後兼容性。編譯代碼時,返回類型是字節代碼簽名的一部分,如果不重新編譯源代碼,您將無法使用新方法。你也可以用Java中的write(char)來代替'write(int)'(這是一些代碼的改變),但你確實需要重新編譯它。如果你沒有偏好,我建議你使用'append'。它有這個名字的原因是與始終使用append的StringBuffer一致。 StringBuilder/StringBuffer/Writer現在都共享Appendable接口。 – 2011-05-10 12:33:25

5

Append()可以採取CharSequence,而write()需要String

由於StringCharSequence的實現,您還可以將String傳遞給append()。但是你也可以通過StringBuilderStringBufferappend,你不能用write()

1

Writer.append(c)返回Writer實例。因此,您可以鏈接多個呼叫以附加,例如out.append("Hello").append("World");

1

在我看來就像它的Appendable接口java.io.Writer工具,以提供與java.util.Formatter兼容性的副產品。正如你所指出的,文件指出,對於java.io.Writer這兩種方法沒有實際的區別。

5

你可以從文檔看,還追加返回你剛纔寫的,這樣就可以執行多個作家追加如:

out.append(a).append(b).append(c) 
相關問題