一、方法定义

public int length()
  • 所属类java.lang.String
  • 功能:返回字符串中字符的数量(即Unicode码单元的数量)。
  • 返回值:一个整数,表示字符串的长度。

二、功能说明

  1. 字符数统计
    • 包括所有字符(字母、数字、空格、标点、特殊符号)。
    • 例如:"Hello World"的长度为11(包含空格)。
  2. 空字符串处理
    • 空字符串""的长度为0。
  3. 不可变性
    • length()方法不会修改原字符串。

三、示例代码

1. 基础用法

String str1 = "Hello";
int len1 = str1.length(); // 5

String str2 = "Hello World";
int len2 = str2.length(); // 11(包含空格)

String str3 = "";
int len3 = str3.length(); // 0

2. 处理null的情况

String str = null;
int len = str.length(); // 抛出NullPointerException

3. 结合其他方法使用

String str = "  Java  ";
int trimmedLength = str.trim().length(); // 4(去除首尾空格后长度)

四、使用技巧

  1. 密码长度验证
    if (password.length() >= 8 && password.length() <= 12) {
        System.out.println("密码长度符合要求");
    }
    
  2. 去除空格后计算长度
    String str = "  Hello   World  ";
    int cleanLength = str.replace(" ", "").length(); // 10(去除所有空格)
    
  3. 处理多语言字符
    • 对于包含Unicode代理对(如表情符号)的字符串,需使用codePointCount()
      String emoji = "😊";
      int codePoints = emoji.codePointCount(0, emoji.length()); // 1
      

五、常见错误

  1. 未检查null导致异常
    String str = null;
    int len = str.length(); // 抛出NullPointerException
    
  2. 误认为返回字节数
    • length()返回字符数,而非字节数。若需字节数,需调用getBytes()
      String str = "Hello";
      int byteLength = str.getBytes(StandardCharsets.UTF_8).length; // 5
      

六、注意事项

  1. null检查
    • 调用length()前需确保字符串非null
      if (str != null && str.length() > 0) { ... }
      
  2. 空格与特殊字符
    • length()包含空格和特殊字符,如" ".length() == 3。
  3. Unicode字符处理
    • 对于包含代理对的字符(如表情符号),需使用codePointCount()准确计算字符数。

七、最佳实践

  1. 工具类辅助
    • 使用StringUtils.isEmpty()(Apache Commons Lang)简化空值检查:
      if (StringUtils.isNotEmpty(str)) {
          int len = str.length();
      }
      
  2. 性能优化
    • length()方法的时间复杂度为O(1),因其内部维护了长度字段。
    • 避免重复调用length(),可缓存结果:
      int len = str.length();
      for (int i = 0; i < len; i++) { ... }
      

八、性能优化

场景 优化建议
高频调用 缓存length()结果,避免重复计算。
多语言支持 使用codePointCount()处理Unicode字符。
空值处理 使用工具类(如Objects.isNull())进行安全检查。

九、总结

  1. 核心功能length()方法返回字符串的字符数量,包含空格和特殊字符。
  2. 关键实践
    • 调用前检查null
    • 区分字符数与字节数的差异。
    • 使用工具类简化空值和长度判断。
  3. 性能保障length()方法高效,适合高频调用,但需注意避免因空指针导致的异常。