想象一下,您希望向遊戲顯示歡迎消息,但需要將源代碼中的行保持爲最大長度爲80個字符的寬度。在遊戲中,線條的長度並不重要。歡迎消息的一個例子是:將長文本分割成多行代碼,最好的方法是做什麼?
private void welcomeMessage() {
System.out.println("Welcome to the game. This message should learn me how to create a long messages like this in a read-able fashion. Imagine there is a limit of 80 characters per line for a programmer to see. How to fix this efficiently? This is one large line in my IDEA. ");
}
此行是太長了爲它是每個代碼行80個字符,你可以通過滾動條看。我以前學過簡單地做這樣的事情:
private void welcomeMessage() {
System.out.println("Welcome to the game. This message should learn me" +
" how to create a long messages like this in a read-able " +
"fashion. Imagine there is a limit of 80 characters per line for" +
" a programmer to see. How to fix this efficiently? This is one " +
"large line in my IDEA. ");
}
但是我覺得這是醜陋的解決方案,這將創建一個依賴關係是那麼令人討厭。如果我添加到"Welcome to the game. This message should learn me"
只需要一個單詞,我必須更改所有其他行,因此一行之後的所有行取決於它。
我也可以想象,只是爲了使其可讀性受到懲罰。這讓我想知道:
- 編譯器是否直接附加所有行,因爲它們本身不依賴於其他變量,或者它是否在運行時發生? (我擔心它會調用連接操作符函數('+')4次)
- 在此示例中,帶有.append()的StringBuffer會更有效,因爲它不會創建5個字符串,而是將其附加到StringBuilder對象?
想象一下,這是一款真正的遊戲,你可以製作一個txt文本文件並將其導入到一個StringBuffer等中以將其顯示在屏幕上嗎?或者,你會如何顯示更長的短信?
字符串連接實際上在後臺變成了'StringBuilder.append()'。我會親自使用一個StringBuilder併爲每行添加一行,使它看起來更乾淨(記住在每個行的開始末尾放置一個空格)。或者,您可以使用Apache Commons Configurations並從'.properties'文件中讀取值。 – Ascalonian
這個「要求」在什麼時候起作用?如果只在作業的最後,編寫代碼,並且只在完成時調整格式。如果不是,你會多久更換一次字符串 - 往往足以讓它成爲一個實際問題? – usr2564301
@Ascalonian謝謝。花了一段時間找到該頁面的答案。這裏是答案1.通過常量表達式計算的字符串(§15.28)在編譯時計算,然後視爲文字。 在運行時通過串聯計算的字符串是新創建的,因此是不同的。 你可以在這裏看到什麼字符串文字是:http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28 – Joop