我沒有機會在學校參加任何嚴肅的低水平編程課程。 (我知道我真的應該繼續學習「幕後」成爲一名更好的程序員)。我很欣賞Java的便利,包括能夠將任何東西粘到System.out.print
聲明中。但是,有沒有什麼原因可以改爲使用System.out.printf
?在java中使用「printf」而不是「print」是否有很好的理由?
此外,我應該避免在「真實應用程序」中這樣打印電話嗎?使用某種UI功能將消息打印到客戶端顯示屏可能會更好,對吧?
我沒有機會在學校參加任何嚴肅的低水平編程課程。 (我知道我真的應該繼續學習「幕後」成爲一名更好的程序員)。我很欣賞Java的便利,包括能夠將任何東西粘到System.out.print
聲明中。但是,有沒有什麼原因可以改爲使用System.out.printf
?在java中使用「printf」而不是「print」是否有很好的理由?
此外,我應該避免在「真實應用程序」中這樣打印電話嗎?使用某種UI功能將消息打印到客戶端顯示屏可能會更好,對吧?
的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
的功能。
如果你需要控制浮點數的精度,做填充等等更好。System.out.print可以打印出各種東西,但是你不能對精度和填充進行精細控制用它。
通常在「真實」應用程序中,您可以寫入日誌記錄系統,例如java.util.Logging或commons logging,它們可以記錄各種級別的詳細程度(即「調試」模式,這將被禁用在生產環境中)。但是,對於快速和骯髒的臨時調試,有時System.out.println()是最簡單的方法(假設您的運行時環境將標準輸出轉儲到可讀取標準輸出的地方)。我還應該提到,您總是可以使用「String.format()」使用格式和可變參數列表創建一個字符串(然後將此字符串傳遞到日誌記錄方法或System.out.println中)。這通常比將一堆變量連接成一個字符串更好。
如果大多數真正的程序使用日誌記錄。調試消息可以通過日誌配置打開/關閉。以log4j爲例。
更好的例子是使用%+ x.yf的浮點,其中x和y是不同的數字。 – Calyth 2009-02-14 01:36:01