这样可以:
for (char c : sourceString.toCharArray())
destString += (char) (c + shiftValue);
System.out.println(destString);
有更好/更快(优化)的方法吗?
这样可以:
for (char c : sourceString.toCharArray())
destString += (char) (c + shiftValue);
System.out.println(destString);
有更好/更快(优化)的方法吗?
开始时,我希望您避免使用重复的字符串连接。这是一个非常著名的性能问题。
在这种情况下,您知道需要开始的确切长度,因此甚至不需要StringBuilder
- 只需要一个char[]
就可以了:
char[] result = new char[srcString.length()];
for (int i = 0; i < result.length; i++) {
result[i] = (char) (srcString.charAt(i) + shiftValue);
}
String destString = new String(result);
toCharArray
方法将答案转换为字符数组并逐个覆盖每个元素也很好,尽管我认为性能差异应该很小。如果这是真正关键的代码,您需要在实际系统中进行测试。重点是两种方法都是O(N)方法,而不是O(N2)方法。)[
)。这可能不是您的情况要求的,但您肯定应该考虑。)charAt(i)
。char[] result = srcString.toCharArray();
for (int i = 0; i < result.length; i++) {
result[i] += shiftValue;
}
String destString = new String(result);
是的,有:
StringBuilder destString = new StringBuilder();
for (char c : srcString.toCharArray()) {
destString.appned((char) (c + shiftValue));
}
System.out.println(destString.toString());