2009-02-14 65 views
17

我沒有機會在學校參加任何嚴肅的低水平編程課程。 (我知道我真的應該繼續學習「幕後」成爲一名更好的程序員)。我很欣賞Java的便利,包括能夠將任何東西粘到System.out.print聲明中。但是,有沒有什麼原因可以改爲使用System.out.printf在java中使用「printf」而不是「print」是否有很好的理由?

此外,我應該避免在「真實應用程序」中這樣打印電話嗎?使用某種UI功能將消息打印到客戶端顯示屏可能會更好,對吧?

回答

26

PrintStream類的printf方法提供string formatting類似於C

printf的功能printf格式化使用Formatter class' formatting syntax

在一行這將使用字符串連接是乏味顯示多個變量時,printf方法可以是特別有用的:

int a = 10; 
int b = 20; 

// Tedious string concatenation. 
System.out.println("a: " + a + " b: " + b); 

// Output using string formatting. 
System.out.printf("a: %d b: %d\n", a, b); 

另外,書面方式的Java應用程序並不一定意味着寫入GUI的應用程序,所以書寫時控制檯應用程序中,將使用print,println,printf和其他將輸出到System.out的功能。

+0

更好的例子是使用%+ x.yf的浮點,其中x和y是不同的數字。 – Calyth 2009-02-14 01:36:01

2

如果你需要控制浮點數的精度,做填充等等更好。System.out.print可以打印出各種東西,但是你不能對精度和填充進行精細控制用它。

3

通常在「真實」應用程序中,您可以寫入日誌記錄系統,例如java.util.Logging或commons logging,它們可以記錄各種級別的詳細程度(即「調試」模式,這將被禁用在生產環境中)。但是,對於快速和骯髒的臨時調試,有時System.out.println()是最簡單的方法(假設您的運行時環境將標準輸出轉儲到可讀取標準輸出的地方)。我還應該提到,您總是可以使用「String.format()」使用格式和可變參數列表創建一個字符串(然後將此字符串傳遞到日誌記錄方法或System.out.println中)。這通常比將一堆變量連接成一個字符串更好。

2

如果大多數真正的程序使用日誌記錄。調試消息可以通過日誌配置打開/關閉。以log4j爲例。

相關問題