String.contains()用于判断字符串是否包含指定子串,返回boolean值,区分大小写,空字符串恒为true,null会抛异常,应先判空;与indexOf()、startsWith()等方法语义和用途不同。

String.contains() 是 Java 中判断一个字符串是否包含指定子串最直接的方法,它返回 boolean 类型结果,用起来简单、语义清晰。
基本用法:传入 CharSequence 即可
该方法接收一个 CharSequence 类型参数(String 是其常见实现),内部会调用 indexOf() 判断是否存在。只要子串出现一次,就返回 true;否则返回 false。
示例:
String text = "Hello, world!";boolean hasWorld = text.contains("world"); // true
boolean hasJava = text.contains("Java"); // false
boolean hasComma = text.contains(","); // true
注意大小写敏感
contains() 区分大小写,"Hello" 不等于 "hello"。
若需忽略大小写,不能直接用 contains(),可先统一转为小写(或大写)再判断:
text.toLowerCase().contains("hello")- 或使用正则:
text.matches("(?i).*hello.*")(性能稍差,不推荐高频场景)
空字符串和 null 的处理
""(空字符串)是任意非 null 字符串的子串,所以 "abc".contains("") 返回 true。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
但传入 null 会抛出 NullPointerException:
s.contains("a"); // 运行时报错
安全写法建议提前判空:
s != null && s.contains("target")- 或用
Objects.nonNull(s) && s.contains("target")
和 indexOf()、startsWith()、endsWith() 的区别
contains() 只关心“是否存在”,不关心位置;而 indexOf() 返回首次出现的索引(-1 表示未找到);startsWith() 和 endsWith() 分别判断前缀和后缀,语义更明确。
选哪个?看需求:
- 只问“有没有” → 用
contains() - 需要知道“在哪” → 用
indexOf() - 确认是否开头/结尾 → 用
startsWith()/endsWith()
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










