我正在使用这个 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));
}
这很简单:"" + array.charAt(i)
像这样的东西
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]);
}
只需这样做:
char[] array;
g.drawString(String.valueOf(array[i]));
这是最佳实践方式:
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 notice 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]
。
然后是丑陋的hackling:
"" + 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 中有两种干净的解决方案可用,这种开销实际上是毫无用处的:将字符转换为字符串,以及构造子字符串。