2013-02-08 107 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]); 
    } 
相关问题