在Java中,检查StringBuilder
是否包含字符串(即非空)的最直接方法是检查其长度(length()
)。以下是详细的判断方法:
1. 判断StringBuilder是否为空(无内容)
StringBuilder sb = new StringBuilder();
// 方法1:使用length()判断
if (sb.length() == 0) {
System.out.println("StringBuilder为空");
}
// 方法2:Java 11+ 使用isEmpty()
if (sb.isEmpty()) { // Java 11及以上版本可用
System.out.println("StringBuilder为空");
}
2. 判断StringBuilder是否非空(有内容)
StringBuilder sb = new StringBuilder("Hello");
if (sb.length() > 0) {
System.out.println("StringBuilder包含字符串: " + sb);
}
// 或者更直观的判断
if (!sb.isEmpty()) { // Java 11+
System.out.println("StringBuilder非空");
}
3. 判断是否包含特定字符串
StringBuilder sb = new StringBuilder("Hello World");
// 方法1:转换为String后判断(消耗资源)
if (sb.toString().contains("World")) {
System.out.println("包含'World'");
}
// 方法2:使用indexOf()高效判断(推荐)
if (sb.indexOf("World") != -1) {
System.out.println("包含'World'");
}
4. 完整示例代码
public class StringBuilderCheck {
public static void main(String[] args) {
// 空StringBuilder判断
StringBuilder sb1 = new StringBuilder();
checkEmpty(sb1); // 输出: StringBuilder为空
// 非空StringBuilder判断
StringBuilder sb2 = new StringBuilder("Hello");
checkEmpty(sb2); // 输出: StringBuilder有内容: Hello
// 内容检查
checkContent(sb2, "Hi"); // 输出: 不包含'Hi'
checkContent(sb2, "ell"); // 输出: 包含'ell'
}
static void checkEmpty(StringBuilder sb) {
if (sb.length() == 0) {
System.out.println("StringBuilder为空");
} else {
System.out.println("StringBuilder有内容: " + sb);
}
}
static void checkContent(StringBuilder sb, String search) {
if (sb.indexOf(search) != -1) {
System.out.println("包含'" + search + "'");
} else {
System.out.println("不包含'" + search + "'");
}
}
}
性能建议:
-
避免不必要的
toString()
转换// 错误做法(创建临时字符串) if (sb.toString().isEmpty()) { ... } // 正确做法(直接检查长度) if (sb.length() == 0) { ... }
-
**优先使用
indexOf()
替代toString().contains()
**
当需要检查内容时,indexOf()
直接在内部数组中搜索,比创建临时字符串更高效。
版本说明:
length() == 0
:所有Java版本适用isEmpty()
:仅限Java 11及更高版本indexOf()
:所有Java版本适用且高效