PHP速学视频免费教程(入门到精通)
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
在java编程中,我们有时会遇到需要将一个字符串中的每个字符进行大小写反转的需求:小写字母变为大写,大写字母变为小写,而其他非字母字符保持不变。例如,将输入字符串 "loweruppercase" 转换为 "loweruppercase"。
初学者在尝试实现此功能时,常犯的一个错误是直接在循环中使用String类的toLowerCase()或toUpperCase()方法。例如:
public class LowerUpperCase { public static void main(String[] args) { String s = "lowerUppercase"; for (int i = 0; i < s.length(); i++) { // 循环遍历字符串 if (s.charAt(i) >= 'a' && s.charAt(i) <= 'z') { s = s.toLowerCase(); // 错误:这会把整个字符串转为小写 } else if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') { s = s.toUpperCase(); // 错误:这会把整个字符串转为大写 } } System.out.println(s); } }
上述代码的输出总是 "loweruppercase" 或 "LOWERUPPERCASE"。这是因为s.toLowerCase()和s.toUpperCase()方法会返回一个新的字符串,其中所有字符都被转换为指定的大小写。当在循环内部执行 s = s.toLowerCase(); 时,无论当前字符是什么,整个字符串s都会被转换为全小写。同理,s = s.toUpperCase(); 会将整个字符串转换为全大写。这种操作并非针对单个字符,而是针对整个字符串,因此无法实现逐字符的大小写反转。
此外,这里也引出了Java中String的一个重要特性:字符串是不可变的(Immutable)。这意味着一旦一个String对象被创建,它的内容就不能被改变。所有看起来修改String对象的操作(如toLowerCase()、toUpperCase()、replace()等)实际上都会返回一个新的String对象,而原始的String对象保持不变。
要实现字符串中每个字符的大小写反转,我们需要逐个处理字符串中的字符,并构建一个新的字符串来存储结果。由于String的不可变性,反复创建新的String对象(例如在循环中通过s = s + char的方式拼接)会导致大量的临时对象创建和垃圾回收开销,效率低下。因此,推荐使用StringBuilder类来高效地构建可变字符串。
核心思路:
代码示例:
public class CharacterCaseConverter { public static void main(String[] args) { String inputString = "lowerUppercase"; String convertedString = convertCase(inputString); System.out.println("原始字符串: " + inputString); System.out.println("转换后字符串: " + convertedString); // 预期输出: LOWERuPPERCASE inputString = "HelloWorld123!"; convertedString = convertCase(inputString); System.out.println("原始字符串: " + inputString); System.out.println("转换后字符串: " + convertedString); // 预期输出: hELLOwORLD123! } /** * 将字符串中每个英文字符的大小写进行反转。 * 小写转大写,大写转小写,非英文字符保持不变。 * * @param s 待处理的字符串 * @return 转换大小写后的新字符串 */ public static String convertCase(String s) { if (s == null || s.isEmpty()) { return s; // 处理空字符串或null的情况 } StringBuilder output = new StringBuilder(); // 使用StringBuilder高效构建新字符串 for (int i = 0; i < s.length(); i++) { char currentChar = s.charAt(i); // 获取当前字符 if (currentChar >= 'a' && currentChar <= 'z') { // 如果是小写字母,转换为大写 output.append(Character.toUpperCase(currentChar)); } else if (currentChar >= 'A' && currentChar <= 'Z') { // 如果是大写字母,转换为小写 output.append(Character.toLowerCase(currentChar)); } else { // 非英文字符保持不变 output.append(currentChar); } } return output.toString(); // 将StringBuilder转换为String并返回 } }
代码解释:
// 示例:使用Character.isLowerCase/isUpperCase if (Character.isLowerCase(currentChar)) { output.append(Character.toUpperCase(currentChar)); } else if (Character.isUpperCase(currentChar)) { output.append(Character.toLowerCase(currentChar)); } else { output.append(currentChar); }
实现Java字符串字符大小写反转的关键在于:
通过理解这些核心概念和实践方法,可以准确高效地完成字符串字符大小写反转的需求。
Java免费学习笔记:立即学习
解锁 Java 大师之旅:从入门到精通的终极指南
已抢7380个
抢已抢95543个
抢已抢14978个
抢已抢52843个
抢已抢196073个
抢已抢87536个
抢