本文详解如何高效、准确地将字符串中每个字母的大小写进行互换(大写变小写,小写变大写),指出原始代码的逻辑错误,并提供基于 `stringbuffer` 的可修改方案及更现代的 `stringbuilder` 优化写法。
原始代码存在多个关键问题:
✅ 正确思路应为:
遍历每个字符 → 若为小写字母,转为大写;若为大写字母,转为小写;其余字符原样保留。
推荐使用 StringBuilder(线程不安全但性能更高,适用于单线程场景)替代 StringBuffer(同步开销大,已过时):
public static String toAlternativeCase(String str) {
if (str == null) return null;
StringBuilder sb = new StringBuilder(str.length());
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (Character.isLowerCase(c)) {
sb.append(Character.toUpperCase(c));
} else if (Character.isUpperCase(c)) {
sb.append(Character.toLowerCase(c));
} else {
sb.append(c); // 保留数字、空格、符号等非字母字符
}
}
return sb.toString();
}调用示例:
public static void main(String[] args) {
String input = "Elmar DidOkLTWdeee";
System.out.println(toAlternativeCase(input));
// 输出:eLMAR dIDoKltwDEEE
}⚠️ 注意事项:
用 += 拼接字符串,务必使用 StringBuilder 或 StringBuffer; 总结:大小写互换本质是逐字符映射操作,核心在于逻辑完备性与实现效率。使用 StringBuilder + 清晰分支判断,即可写出健壮、可读、高性能的转换方法。