我正在使用这个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