
嘻道奇闻
- 文章199742
- 阅读14625734
Java字符串操作:String类常用方法详解与代码示例
社会2025-05-28 03:46:12
在Java编程中,字符串处理占据核心地位。String类提供的50+个方法覆盖了开发者的日常需求,本节通过三维问答矩阵解析高频使用场景。
??字符串长度与内容验证??
如何准确获取字符串长度?空字符串如何判断?
java复制String str = "HelloWorld"; System.out.println("长度:" + str.length()); // 输出10 System.out.println("是否空值:" + str.isEmpty()); // false
当需要验证用户输入的手机号格式时,结合length()与正则表达式可快速校验:
java复制String phone = "13812345678"; boolean isValid = phone.length() == 11 && phone.matches("^1[3-9]\\d{9}$");
??字符串截取与定位??
怎样安全提取子字符串?索引越界如何预防?
java复制String text = "2023-07-25"; String month = text.substring(5,7); // "07"
处理用户输入的身份证号时,substring()需配合异常处理:
java复制try { String idCard = "11010119900307761X"; String birthYear = idCard.substring(6,10); } catch (IndexOutOfBoundsException e) { System.out.println("身份证号码长度异常"); }
??字符串修改与构建??
为何要避免直接修改字符串?何时使用StringBuilder?
java复制// 低效的字符串拼接 String result = ""; for(int i=0; i<1000; i++){ result += i; // 每次循环创建新对象 } // 高效方式 StringBuilder sb = new StringBuilder(); for(int i=0; i<1000; i++){ sb.append(i); }
当处理动态生成的SQL语句时,replace()方法配合占位符更安全:
java复制String template = "SELECT * FROM users WHERE name='{name}'"; String safeQuery = template.replace("{name}", escapeSql(userInput));
??字符串比较与匹配??
equals与==有何本质区别?如何实现忽略大小写比较?
java复制String s1 = "Java"; String s2 = new String("Java"); System.out.println(s1 == s2); // false System.out.println(s1.equals(s2)); // true
处理文件扩展名验证时,结合toLowerCase()和endsWith():
java复制String fileName = "IMAGE.PNG"; boolean isImage = fileName.toLowerCase().endsWith(".png");
??字符串拆分与转换??
split()方法的正则陷阱如何规避?特殊符号如何处理?
java复制String data = "apple|orange|banana"; String[] fruits = data.split("\\|"); // 正确转义正则符号 // 处理CSV中的逗号分隔 String csv = "\"Smith, John\",25,New York"; String[] cols = csv.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
数值转换场景中,需防范NumberFormatException:
java复制String numStr = "123a"; try { int num = Integer.parseInt(numStr); } catch (NumberFormatException e) { System.out.println("非数字字符"); }
??内存优化与垃圾回收??
intern()方法的使用场景与风险如何平衡?
java复制String s1 = new String("Java").intern(); String s2 = "Java"; System.out.println(s1 == s2); // true
大量字符串操作时,建议配置JVM参数:
-XX:+UseStringDeduplication // G1垃圾回收器的字符串去重
通过28个典型代码案例,我们验证了String类方法在数据处理、输入验证、文本解析等场景的核心价值。开发者需特别注意字符串不可变性带来的性能影响,在循环体或高频调用场景优先使用StringBuilder。