Java中的String
类提供了一个名为contains()
的方法,用于检查一个字符串是否包含特定的字符序列。以下是关于contains()
方法的详细说明:
方法声明
public boolean contains(CharSequence s)
:这个方法接受一个实现了CharSequence
接口的对象作为参数,并返回一个布尔值。
功能描述
contains()
方法接收一个字符序列作为参数,并检查该序列是否出现在调用方法的字符串中。
返回值
该方法根据字符串是否包含指定的字符序列返回true
或false
。
CharSequence
是什么?
CharSequence
是一个Java接口,代表了一组字符的序列。这个接口提供了对不同种类字符序列的统一、只读访问方式。以下是实现CharSequence
接口的一些类:
CharBuffer
Segment
String
StringBuffer
StringBuilder
除了CharBuffer
是一个抽象类外,其余都是普通类。因此,可以将这些普通类的对象作为contains()
方法的参数传递,以检查字符串是否包含这些对象表示的字符序列。
示例代码
下面是一个使用contains()
方法的示例代码:
public class Codekru {
public static void main(String[] args) {
String str = "hello codekru";
String string = "codekru";
StringBuilder stringBuilder = new StringBuilder("codekru");
StringBuffer stringBuffer = new StringBuffer("codekru");
System.out.println("Does str contains string? " + str.contains(string));
System.out.println("Does str contains stringBuilder? " + str.contains(stringBuilder));
System.out.println("Does str contains stringBuffer? " + str.contains(stringBuffer));
}
}
输出结果为:
Does str contains string? true
Does str contains stringBuilder? true
Does str contains stringBuffer? true
内部实现
contains()
方法的内部实现是通过调用indexOf()
方法来判断是否包含字符序列:
public boolean contains(CharSequence s) {
return indexOf(s.toString()) >= 0;
}
这表明contains()
方法通过将输入的CharSequence
对象转换为字符串,并检查转换后的字符串是否出现在原字符串中来工作。
特殊情况
传入空字符串
如果你向contains()
方法传递一个空字符串(""
),该方法将始终返回true
,因为任何字符串都包含空字符串。
public class Codekru {
public static void main(String[] args) {
String str1 = "hello codekru";
String str2 = "";
System.out.println(str1.contains(""));
System.out.println(str2.contains(""));
}
}
输出结果为:
true
true
传入空引用(null)
如果你向contains()
方法传递一个null
值,将会抛出NullPointerException
:
public class Codekru {
public static void main(String[] args) {
String str = "hello codekru";
System.out.println(str.contains(null));
}
}
输出结果为:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.lang.CharSequence.toString()" because "s" is null
以上是关于Java中String
类contains()
方法的详细介绍,包括其用法、内部实现以及在处理特殊情况时的行为。