欢迎访问宙启技术站
智能推送

Java的字符串比较函数

发布时间:2023-06-22 21:40:36

Java中字符串的比较是非常常见的操作,比较两个字符串的内容是否一致、判断一个字符串是否包含另一个字符串等等。Java中提供了多种字符串比较函数的方式,本文将会详细介绍Java的字符串比较函数。

一、基础比较函数——equals

Java中最基础的字符串比较函数就是equals,它是Object类中的方法,String类重写了这个方法。调用equals方法可以比较两个字符串的内容是否相等,例如:

String str1 = "hello";
String str2 = "hello";
if (str1.equals(str2)) {
    System.out.println("两个字符串相等。");
}

上述代码中,str1和str2的值都是"hello",所以两个字符串是相等的。通过.equals()函数进行比较,输出了"两个字符串相等。"。

需要注意的是,equals比较的是字符串的内容,而非对象的内存地址。因此对于下面的代码:

String str1 = "hello";
String str2 = new String("hello");
if (str1.equals(str2)) {
    System.out.println("两个字符串相等。");
}

虽然str1和str2都表示的是"hello"这个字符串,但是它们分别是常量和对象的创建。此时equals比较的是字符串对象的内容,因此输出的结果是"两个字符串相等。"。

二、比较函数——compareTo

除了equals以外,还有一个比较函数是compareTo,这个函数定义在Comparable接口中,String类也实现了这个接口,因此String类中也有compareTo方法。调用compareTo方法可以比较两个字符串的大小,比较方式是按照字典顺序进行比较。

例如:

String str1 = "apple";
String str2 = "banana";
String str3 = "apple";

if (str1.compareTo(str2) < 0) {
    System.out.println("str1 < str2");
}
if (str1.compareTo(str3) == 0) {
    System.out.println("str1 == str3");
}
if (str2.compareTo(str3) > 0) {
    System.out.println("str2 > str3");
}

输出的结果是:

str1 < str2
str1 == str3
str2 > str3

其中,compareTo函数返回的字典序比较结果包括三种:小于0表示调用compareTo的字符串在字典顺序中排在参数字符串的前面,等于0表示两个字符串相等,大于0表示调用compareTo的字符串在字典顺序中排在参数字符串的后面。

三、忽略大小写比较函数——equalsIgnoreCase

equals和compareTo方法都是区分大小写的比较函数,如需比较字符串内容而忽略大小写,则可以使用equalsIgnoreCase方法,比如:

String str1 = "AbC";
String str2 = "abc";

if (str1.equalsIgnoreCase(str2)) {
    System.out.println("两个字符串相等。");
}

上述代码中,str1和str2值不同,但是因为equalsIgnoreCase方法忽略大小写,所以两个字符串比较结果是相等的。

四、判断字符串是否包含——contains

除了比较字符串大小,Java中还可以判断一个字符串是否包含另一个字符串,这可以使用contains方法实现,比如:

String str1 = "hello world";
String str2 = "lo";

if (str1.contains(str2)) {
    System.out.println("字符串'hello world'包含'lo'。");
}

上述代码中,调用contains方法判断字符串"hello world"是否包含"lo",结果返回true,因此输出"字符串'hello world'包含'lo'。"。

五、正则表达式匹配比较函数——matches

在Java中,可以使用正则表达式来进行字符串匹配,matches是用于判断字符串是否能够匹配一个正则表达式的方法。例如:

String str1 = "beijing";
String regx1 = "^[a-z]+$";
String regx2 = "^[A-Z]+$";

if (str1.matches(regx1)) {
    System.out.println("str1符合正则表达式:" + regx1);
}
if (str1.matches(regx2)) {
    System.out.println("str1符合正则表达式:" + regx2);
}

上述代码中,str1是一个字符串,regx1和regx2是两个正则表达式。首先判断str1是否符合正则表达式regx1,结果返回true,则输出"str1符合正则表达式:^[a-z]+$"。此时,str1不符合正则表达式regx2,因此不会输出"str1符合正则表达式:^[A-Z]+$"。其中,正则表达式"^[a-z]+$"标示字符串必须由小写字母组成,而正则表达式"^[A-Z]+$"则表示字符串必须由大写字母组成。

六、字符串比较函数小结

Java中的字符串比较函数包括:

1. equals:比较字符串的内容是否相等,区分大小写。

2. compareTo:比较字符串的大小,按照字典序进行比较。

3. equalsIgnoreCase:比较字符串的内容是否相等,忽略大小写。

4. contains:判断一个字符串是否包含另一个字符串。

5. matches:判断字符串是否能够匹配一个正则表达式。

通过这些方法的使用,可以方便地进行字符串比较,从而实现对字符串的更精确操作。