startsWith和endsWith是Java中校验字符串前缀与后缀最直接高效的方法,区分大小写,支持指定起始位置(startsWith)或自动对齐末尾(endsWith),空字符串恒为真,null需预先判空。

Java 中的 startsWith 和 endsWith 是字符串校验前缀与后缀最直接、高效的方法,区分大小写且支持指定起始/结束位置。
startsWith:检查字符串是否以指定前缀开头
该方法有三个重载版本,常用的是:
-
str.startsWith(String prefix):从字符串开头(索引 0)判断是否以prefix开头 -
str.startsWith(String prefix, int toffset):从索引toffset开始检查是否以prefix开头(常用于子串校验)
示例:
String s = "HelloWorld";s.startsWith("Hello"); // true
s.startsWith("hello"); // false(区分大小写)
s.startsWith("World", 5); // true(从索引 5 开始,即 "World")
endsWith:检查字符串是否以指定后缀结尾
只有一种常用形式:
立即学习“Java免费学习笔记(深入)”;
-
str.endsWith(String suffix):判断字符串是否以suffix结尾(自动从末尾对齐,无需指定位置)
示例:
String s = "data.json";s.endsWith(".json"); // true
s.endsWith(".JSON"); // false
s.endsWith(""); // true(空字符串是任意字符串的后缀)
使用注意事项
- 两个方法都区分大小写;如需忽略大小写,可先转为统一大小写再调用,例如:
s.toLowerCase().startsWith("abc") - 参数为
null会抛出NullPointerException,建议校验非空:s != null && s.startsWith(...) -
startsWith("", 0)或endsWith("")均返回true,这是 Java 的定义行为 - 若
toffset超出字符串长度或为负数,startsWith返回false(不会抛异常)
替代方案与补充说明
对于更复杂的匹配(如通配符、正则),可用 matches() 或 Pattern,但性能和语义不如 startsWith/endsWith 清晰。简单前缀/后缀判断,这两个方法就是标准、安全、零依赖的选择。


















