我有一個代碼。Java快速生成零字符串
private static String generateString(int size) {
StringBuffer s = new StringBuffer();
for (int i = 0; i < size; i++)
s.append("0");
return s.toString();
}
其產生箱用於0000
大小= 4
如何可以簡化這個代碼塊?
我有一個代碼。Java快速生成零字符串
private static String generateString(int size) {
StringBuffer s = new StringBuffer();
for (int i = 0; i < size; i++)
s.append("0");
return s.toString();
}
其產生箱用於0000
大小= 4
如何可以簡化這個代碼塊?
我不確定你的意思是「快」 - 快速的代碼行少,或CPU執行快?請使用StringBuffer
。它是線程安全的並且非常同步。如果有的話,StringBuilder
有更小的佔地面積。
這裏雖然替代:
char[] c = new char[10];
Arrays.fill(c, '0');
String result = new String(c);
它比StringBuilder
還要輕,這可能是由於光,因爲它得到。 StringBuilder
也在內部附加到char[]
,但不知道預先設置的大小,它總是在進行範圍檢查並根據需要縮放緩衝區。你可以構造一個StringBuilder(n)
,但它仍然會做浪費的邊界檢查,你將不得不編寫循環來追加你自己。
您是否需要添加空終止符或自動完成? – SyntaxTerror
@插入用戶名在這裏不,你不需要。在Java中,所有數組都是有界的,並且這個String構造函數通過複製整個提供的數組來構建一個新的String。 –
Gotcha。 C正在搞亂我的Java知識= P – SyntaxTerror
你的代碼是好的,但在這種情況下應該使用StringBuilder的代替一個的StringBuffer的(更好的性能比較,你不需要的StringBuffer的同步性質)
假設最大值的大小是100:
private static STRING = "0000..."; // length = 100
private static String generateString(int size) {
return STRING.substring(0, size);
}
Yeap!那是我需要的。 –
你知道'substring()'方法的代價嗎? –
Arrays.copy比添加到緩衝區的工作更快。 –
爲什麼你需要簡化它? – Keppil
這很簡單,不是嗎?而且你不會快得多 – Dakkaron
請優先選擇可讀的代碼。 Java的速度足夠快了。 –