我正在使用這個for循環來通過我的數組從字符串中的單個字符。如何將字符數組中的單個字符轉換爲字符串?
for(int i=0;i< array;i++){
我需要使用g.drawString逐個打印字符。因此,我需要將陣列中[i]位置的字符轉換爲字符串。我該怎麼做呢?
我正在使用這個for循環來通過我的數組從字符串中的單個字符。如何將字符數組中的單個字符轉換爲字符串?
for(int i=0;i< array;i++){
我需要使用g.drawString逐個打印字符。因此,我需要將陣列中[i]位置的字符轉換爲字符串。我該怎麼做呢?
您可以使用:
String.valueOf(yourChar)
所以,你的循環是:
for(int i=0;i< array;i++){
g.drawString(String.valueOf(yourString.charAt(i));
}
這會產生一個錯誤「找不到適用於drawString(String)的方法」。另外我需要把字符串的座標。 – 2013-02-08 12:04:34
請注意'String.valueOf(yourString.charAt(i))'是做'yourString.substring(i,i + 1)'的低效和不必要的複雜方式。 – 2013-02-08 12:05:33
@ Anony-Mousse這是一個非常有趣的陳述。爲什麼'valueOf'的'substring'效率較低?他們都構造了新的'String'對象。 – Andremoniy 2013-02-08 12:13:01
這只是簡單:"" + array.charAt(i)
哎。你有沒有分析過這個,或者檢查它轉換成什麼代碼? – 2013-02-08 11:59:23
@ Anony-Mousse是的,我知道它構造了新的String對象(JLS 15.18.1)。我不認爲這個問題尤其會引起一些嚴重的性能問題。你怎麼看? – Andremoniy 2013-02-08 12:10:34
@ Anony-Mousse BTW'String.valueOf(char c)'也構造新的'String'。 – Andremoniy 2013-02-08 12:11:53
只是這樣做:
char[] array;
g.drawString(String.valueOf(array[i]));
這是該會ST實踐方式:
char[] array;
for (char c : array) {
String s = String.valueOf(c);
// do something with s
}
通常情況下,要做到這一點的最好辦法是如果源是一個String:
str.substring(i, i+1); // If you have a string.
,因爲它避免了不必要的字符緩衝區拷貝。 某些版本的Java(顯然是JDK7u5及更早版本)可以使用重新使用現有的字符緩衝區,這樣可以避免額外的對象創建。 (參見:this announcement of the change,表明這適用於JDK7u5之前)
有兩個比較明顯的替代品(如果你有自己的char[]
作爲數據源,這其中也適用):
String.valueOf(str.charAt(i)); // If you have a String
String.valueOf(chararray[i]); // If you have a char[]
這些會實際上創建兩個對象:一個String
和一個char[1]
。
然後還有醜陋梳理:
"" + str.charAt(i); // If you do do not care about doing things right.
通常導致字符串緩衝區的創建,具有單個附加操作,和轉換爲字符串。如果您在熱循環中使用此代碼,可能會嚴重影響您的應用程序性能。雖然代碼看起來很簡單,它理應翻譯爲:
StringBuilder temp = new StringBuiler("");
temp.append(str.chatAt(i));
temp.toString();
這開銷還算是沒用的,因爲有API提供的兩個乾淨的解決方案:將字符轉換爲字符串,並構建子。
誰告訴aray是字符串?它可以是一個字符數組 – AlexWien 2013-02-08 12:01:00
@AlexWien在這種情況下,您仍然可以使用第二種方法。但是,如果它是一個字符串,則應該使用第一個字符串。這是對API的直接使用。 – 2013-02-08 12:02:41
像這樣的事情
char[] chars = {'a','b','c'};
String[] strings = new String[chars.length];
for (int i = 0; i < chars.length; i++) {
strings[i] = String.valueOf(chars[i]);
}
如果你想OT把單個字符的字符串使用字符+「」; – 2013-02-08 11:55:12
@AchintyaJha雖然這個工程,它不建議,但可能是相當低效的黑客。 – 2013-02-08 11:55:54
什麼是數組?的char []? – AlexWien 2013-02-08 11:58:18