1. 方法功能概述

endsWith() 是 Java 中 String 类提供的一个便捷方法,用于判断当前字符串是否以指定的后缀结尾。这个方法在日常开发中特别适合做文件类型校验、URL 路径检查等场景。

⚠️ 需要注意的特殊情况:当传入空字符串时,方法会直接返回 true(因为任何字符串都可以视为以空字符串结尾)。

2. 方法签名

public boolean endsWith(String suffix)
  • 参数suffix - 要检查的后缀字符串
  • 返回值
    • true - 当前字符串以指定后缀结尾
    • false - 当前字符串不以指定后缀结尾

3. 使用示例

3.1 基础用法

@Test
public void whenCallEndsWith_thenCorrect() {
    String s1 = "test";
    
    assertTrue(s1.endsWith("t"));  // 检查是否以 't' 结尾
    assertFalse(s1.endsWith("st")); // 检查是否以 'st' 结尾
}

3.2 空字符串处理

@Test
public void whenSuffixIsEmpty_thenReturnsTrue() {
    String str = "anyString";
    
    // 空字符串作为后缀时总是返回 true
    assertTrue(str.endsWith(""));  
}

3.3 实际应用场景

// 文件扩展名检查
String filename = "report.pdf";
if (filename.endsWith(".pdf")) {
    System.out.println("PDF 文件");
}

// URL 路径校验
String apiEndpoint = "/api/v1/users";
if (apiEndpoint.endsWith("/users")) {
    System.out.println("用户相关接口");
}

4. 常见踩坑点

  • 大小写敏感"File.TXT".endsWith(".txt") 会返回 false
  • 空字符串处理"any".endsWith("") 永远返回 true
  • ⚠️ 性能考虑:频繁调用时建议缓存结果,特别是对长字符串操作

5. 替代方案对比

方法 特点 适用场景
endsWith() 简单直接 明确的后缀匹配
substring() + equals() 灵活但繁琐 需要更复杂的后缀处理
正则表达式 功能强大 复杂模式匹配

💡 经验之谈:对于简单的后缀检查,直接用 endsWith() 是最简单粗暴的选择,代码可读性也最好。