Java 中String 类的常用方法解析

一、字符串构造与基本信息

方法作用示例代码说明
String()初始化空字符串String s1 = new String();默认为空字符串 ""
String(String original)克隆字符串String s2 = new String("Hello");等效于直接赋值
length()返回字符串长度"Java".length() → 4空串返回 0
isEmpty()判断是否为空字符串"".isEmpty() → true等效于 length() == 0

二、字符串转换与处理

方法作用示例代码注意事项
toLowerCase()转小写"HELLO".toLowerCase() → "hello"根据默认语言环境
toUpperCase()转大写"hello".toUpperCase() → "HELLO"同上
trim()去除首尾空格" java ".trim() → "java"无法去除中间空格
strip()去除首尾空白(含Unicode)" Java\t".strip() → "Java"Java 11+ 新增,替代 trim()
replace(char old, char new)字符替换"hollo".replace('o', 'e') → "hello"全部替换,可链式调用
replaceAll(String regex, String replacement)正则替换"a1b2".replaceAll("\\d", "-") → "a-b-"正则表达式需正确转义(如\\d

三、子串查找与截取

方法作用示例代码关键说明
charAt(int index)获取指定位置字符"Java".charAt(1) → 'a'索引从 0 开始,越界抛异常
indexOf(String str)查找子串首次位置"Java".indexOf("a") → 1未找到返回 -1
lastIndexOf(String str)查找子串最后位置"Java".lastIndexOf("a") → 3
substring(int begin)截取子串(至末尾)"Hello".substring(2) → "llo"前闭后开区间(2 ≤索引< 结尾)
substring(int begin, int end)截取子串"Hello".substring(1,4) → "ell"范围 [begin, end)
contains(CharSequence s)是否包含子串"Java".contains("av") → true等效于 indexOf() != -1
startsWith(String prefix)是否以某前缀开头"file.txt".startsWith("file") → true可选起始位置参数
endsWith(String suffix)是否以某后缀结尾"file.txt".endsWith(".txt") → true

四、字符串拆分与拼接

方法作用示例代码注意事项
split(String regex)按正则拆分数组"a,b,c".split(",") → ["a", "b", "c"]正则特殊字符需转义(如`\
join(CharSequence delimiter, CharSequence... elements)拼接字符串String.join("-", "2023", "12", "31") → "2023-12-31"Java 8+ 支持,替代循环拼接
concat(String str)字符串拼接"Hello".concat(" World") → "Hello World"等效于 +,但效率不高

五、字符串比较与格式化

方法作用示例代码核心规则
equals(Object obj)内容是否相等(区分大小写)"Java".equals("java") → false必须为String类型,null安全返回false
equalsIgnoreCase(String another)无视大小写比较"Java".equalsIgnoreCase("java") → true
compareTo(String another)字典序比较"apple".compareTo("banana") → 负值可用于排序,返回差值
format(String format, Object... args)格式化字符串String.format("PI: %.2f", Math.PI) → "PI: 3.14"类似 printf 语法

六、高级方法与最佳实践

  1. 类型转换

    • valueOf():将其他类型转为字符串
       

      <JAVA>

      String.valueOf(123);   // "123"
      String.valueOf(true);  // "true"
      
    • getBytes():字符串转字节数组(注意编码)
       

      <JAVA>

      byte[] bytes = "Java".getBytes(StandardCharsets.UTF_8);
      
  2. 正则匹配

    • matches(String regex):检查是否匹配正则
       

      <JAVA>

      "123abc".matches("\\d+.*");  // true
      
  3. 字符串池与 intern()

     

    <JAVA>

    String s1 = new String("Java"); // 堆中新对象
    String s2 = s1.intern();        // 返回常量池引用
    

性能提醒与最佳实践

  • 避免循环拼接字符串:使用 StringBuilder 或 StringBuffer(线程安全)。
     

    <JAVA>

    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 100; i++) {
        sb.append(i);
    }
    String result = sb.toString();
    
  • 处理大文本文件:直接逐行读取,避免一次性加载到字符串。
  • 优先用 equals() 比较内容== 比较对象地址,可能导致逻辑错误。

通过掌握这些核心方法,可以高效处理各类字符串场景。根据需求选择最适合的方法,并注意字符串不可变性对性能的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值