2013-02-08 100 views
-1

我正在使用這個for循環來通過我的數組從字符串中的單個字符。如何將字符數組中的單個字符轉換爲字符串?

for(int i=0;i< array;i++){ 

我需要使用g.drawString逐個打印字符。因此,我需要將陣列中[i]位置的字符轉換爲字符串。我該怎麼做呢?

+0

如果你想OT把單個字符的字符串使用字符+「」; – 2013-02-08 11:55:12

+1

@AchintyaJha雖然這個工程,它不建議,但可能是相當低效的黑客。 – 2013-02-08 11:55:54

+0

什麼是數組?的char []? – AlexWien 2013-02-08 11:58:18

回答

2

您可以使用:

String.valueOf(yourChar) 

所以,你的循環是:

for(int i=0;i< array;i++){ 
g.drawString(String.valueOf(yourString.charAt(i)); 
} 
+0

這會產生一個錯誤「找不到適用於drawString(String)的方法」。另外我需要把字符串的座標。 – 2013-02-08 12:04:34

+0

請注意'String.valueOf(yourString.charAt(i))'是做'yourString.substring(i,i + 1)'的低效和不必要的複雜方式。 – 2013-02-08 12:05:33

+1

@ Anony-Mousse這是一個非常有趣的陳述。爲什麼'valueOf'的'substring'效率較低?他們都構造了新的'String'對象。 – Andremoniy 2013-02-08 12:13:01

1

這只是簡單:"" + array.charAt(i)

+0

哎。你有沒有分析過這個,或者檢查它轉換成什麼代碼? – 2013-02-08 11:59:23

+0

@ Anony-Mousse是的,我知道它構造了新的String對象(JLS 15.18.1)。我不認爲這個問題尤其會引起一些嚴重的性能問題。你怎麼看? – Andremoniy 2013-02-08 12:10:34

+0

@ Anony-Mousse BTW'String.valueOf(char c)'也構造新的'String'。 – Andremoniy 2013-02-08 12:11:53

0

只是這樣做:

char[] array; 

g.drawString(String.valueOf(array[i])); 
0

這是該會ST實踐方式:

char[] array; 
for (char c : array) { 
    String s = String.valueOf(c); 
    // do something with s 
} 
0

通常情況下,要做到這一點的最好辦法是如果源是一個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提供的兩個乾淨的解決方案:將字符轉換爲字符串,並構建子。

+0

誰告訴aray是字符串?它可以是一個字符數組 – AlexWien 2013-02-08 12:01:00

+0

@AlexWien在這種情況下,您仍然可以使用第二種方法。但是,如果它是一個字符串,則應該使用第一個字符串。這是對API的直接使用。 – 2013-02-08 12:02:41

0

像這樣的事情

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]); 
    } 
相關問題