startswith和endswith是string类区分大小写的布尔判断方法,分别检查前缀和后缀;空字符串对非null串返回true,null调用抛npe;忽略大小写需先转小写并判空;常用于文件类型、协议识别等场景。

Java 中 startsWith 和 endsWith 是 String 类提供的两个常用方法,用于快速判断字符串是否以指定前缀或后缀开头/结尾,区分大小写,返回布尔值。
startsWith:检查字符串是否以指定前缀开头
该方法有三种重载形式,最常用的是传入一个字符串参数:
-
str.startsWith("abc"):从字符串开头位置(索引 0)开始匹配 -
str.startsWith("abc", fromIndex):从指定索引位置开始检查是否以该前缀开头(较少用) - 也可传入
CharSequence(如StringBuilder),但日常多用String
注意:空字符串 "" 对任意非 null 字符串都返回 true;若原字符串为 null,调用会抛出 NullPointerException,需提前判空。
endsWith:检查字符串是否以指定后缀结尾
只有一种常用形式:str.endsWith("xyz")。它从字符串末尾向前匹配,长度必须完全一致才返回 true。
- 例如
"hello.java".endsWith(".java")→true -
"data.txt.bak".endsWith(".txt")→false(因为实际结尾是".bak") - 同样,
""对任意非 null 字符串返回true
大小写敏感与忽略大小写的处理
这两个方法默认区分大小写。如需忽略大小写,不能直接调用,可转换后再判断:
- 用
toLowerCase()或toUpperCase()统一格式:str.toLowerCase().startsWith("abc") - 更安全的方式是先判空再转:
str != null && str.toLowerCase().startsWith("abc") - 不建议用正则(如
matches("abc.*"))替代,性能低且易出错
常见使用场景和注意事项
常用于文件名判断、协议识别、配置解析等:
- 判断文件类型:
filename.endsWith(".png") || filename.endsWith(".jpg") - 检查 HTTP 协议:
url.startsWith("https://") - 避免空指针:务必在调用前确认字符串非 null,或使用
Objects.nonNull(str) && str.startsWith(...) - 性能友好:底层是简单循环比对字符,时间复杂度 O(n),远快于正则
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











