如何比较两个字符串 Java

比较字符串的方法 Java

Java 提供了可用于比较两个字符串的不同方法 Java. 字符串比较 Java 是将字符序列与字符串进行匹配的功能。

要了解如何比较字符串 Java,可以使用以下类提供的方法。

  • String 类来自 Java.lang 包。
  • 来自的对象类 Java.util 包。
  • org.apache.commons.lang3 包中的 StringUtils 类。

大多数这些 Java 比较字符串方法有忽略大小写的解决方案。在这种情况下 Java 教程中,您将学习可用于比较两个字符串的不同方法。

方法一:String equals() 方法

这款 Java 串 equals() 方法 比较两个字符串对象是否具有相同的字符串值。

语法:

public boolean equals(Object anObject)

equals() 方法参数:

anObject – 用于比较字符串的参数字符串。

equals() 方法返回类型

  • 如果提供的字符串文字与第一个字符串相同,则返回 true。
  • 如果第一个字符串与参数字符串不同,则返回 false。

示例:

public class CompareTwoStrings {
 public static void main(String[] args) {
   String stringOne = "Guru99";
   String stringTwo = "Guru99";
   System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo));
   String stringThree = "GURU99";
   System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree));
  }
}

预期产量:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

说明:

  • 由于指定的对象具有不同的大小写,因此最后的输出结果为 false。

备注:使用字符串 equals 方法进行区分大小写的字符串比较。使用“equalsIgnoreCase”方法比较具有不同字符串值的字符串对象。

方法2:对象equals()方法

这款 Java 对象 equals() 方法比较两个字符串对象以查看它们是否具有相同的值。

语法:

public static boolean equals(Object a, Object b)

equals() 方法参数

a – 第一个字符串对象的参数字符串。

b – 第二个字符串对象的参数字符串。

equals() 方法返回类型

  • 如果字符串文字相等,则返回 true。在两个参数中传递空值也将返回 true。
  • 如果字符串文字不相等,则返回 false。

示例:

import java.util.Objects;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo));
        String stringThree = null;
        String stringFour = null;
        System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour));
    }
}

输出:

is Guru99 equal to Guru99: true
is Guru99 equal to Guru99: true

说明:

从这个例子中,您可以看到输出是一个布尔值 true,因为比较的字符串是相等的。

方法3:String compareTo()方法

这款 Java 字符串比较() 方法按字母顺序比较两个字符串。通常称为字典顺序。

语法:

public int compareTo(String str)

compareTo() 方法参数

str – 与当前字符串进行比较的字符串。

compareTo() 方法返回

  • 0 – 如果指定对象等于当前字符串则返回零。
  • < 0 – 如果此字符串小于指定对象,则返回小于零的数字。
  • > 0 – 如果此字符串超出提供的字符串,则返回大于零的数字。

示例:

public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo));
        String stringThree = "GURU99";
		// u = 117, U = 85, result = 117-85 = 32
        System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree));
    }
}

预期产量:

is Guru99 equal to Guru99: 0
is Guru99 equal to GURU99: 32

说明:

由于第一个字符串和第二个字符串相等,因此第一个结果返回零值。

第二个结果返回值为三十二,因为字符不同。

请注意: 要忽略大小写,可以使用“compareToIgnoreCase”方法。

方法 4:StringUtils equals() 方法

这款 Java StringUtils 相等() 方法比较两个字符序列是否相等。

确保已在程序中添加“org.apache.commons.lang3”库。这将允许您使用 StringUtil 方法比较字符串。

对于 Maven 项目,请使用此 指南 将库添加到项目中。

但是,如果你想在没有任何构建工具的情况下添加库,请使用此 指南.

语法:

public static boolean equals(CharSequnce cs1, CharSequence cs2)

StringUtils equals() 方法参数

  • cs1 – 第一个参数的字符序列。
  • cs2 – 第二个参数的字符序列。

StringUtils equals() 方法返回

  • 如果字符串比较相等,则返回 true。如果在两个参数中传递了空值,则适用此方法。
  • 如果字符串比较不相等,则返回 false。

示例:

import org.apache.commons.lang3.StringUtils;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo));
        String stringThree = "GURU99";
        System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree));
    }
}

输出:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

说明:

由于第一个和第二个字符串的内容相等,所以结果返回 true。

您可以使用“equalsIgnoreCase”方法来忽略大小写。

方法 5:StringUtils equalsAny() 方法

这款 Java StringUtils equalsAny() 方法检查参数中是否存在字符串。

语法:

public static boolean equalsAny(CharSequence string, Charsequence… searchStrings)

StringUtils equalsAny() 方法参数

  • string – 第一个参数的字符串值。该参数也可以具有空值。
  • searchStrings – 一组字符串参数,用于查找第一个参数字符串是否存在。

StringUtils equalsAny() 方法返回

  • 如果要匹配的字符串存在于可变数量的搜索字符串中,则返回 true。如果两个参数都为空,则适用此方法。
  • 如果要匹配的字符串与可变数量的搜索字符串中的任何字符串都不匹配,则返回 false。

示例:

import org.apache.commons.lang3.StringUtils;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String[] stringTwo = new String[] {
            "Guru99",
            "JavaGuru99"
        };
        System.out.println("is Guru99 available: " +
            StringUtils.equalsAny(stringOne, stringTwo));
        String[] stringThree = new String[] {
            "GURU99",
            "JavaGuru99"
        };
        System.out.println("is GURU99 available: " +
            StringUtils.equalsAny(stringOne, stringThree));
    }
}

输出:

is Guru99 available: true
is GURU99 available: false

说明:

由于第一个字符串和第二个字符串的内容相等,因此结果返回 true。您可以使用“equalsAnyIgnoreCase”方法来忽略大小写。

方法 6:使用 == 运算符

字符串上的 == 运算符检查对象引用是否具有相同的地址。

示例:

public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo));
        String stringThree = "GURU99";
        System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree));
    }
}

预期产量:

is Guru99 == to Guru99: true
is Guru99 == to GURU99: false

说明:

  • 第一个结果返回布尔值 true。内容相同的字符串被添加到同一个字符串池,因此字符串共享一个地址。
  • 第二个结果返回布尔值 false。对象具有不同的内容,从而导致其他字符串池。这意味着字符串具有单独的对象引用;因此​​输出为 false。

方法 7:创建自定义方法来比较两个字符串 Java

创建一种使用字典顺序比较两个字符串的方法。

语法:

public static int compareTwoStrings(String str1, String str2)

自定义方法参数

  • str1——要比较的字符串。
  • str2 – 要比较的字符串。

自定义方法返回

  • 0 – 如果第一个字符串等于第二个字符串,则返回零。
  • < 0 – 如果第一个字符串小于第二个字符串,则返回小于零的数字。
  • > 0 – 如果第一个字符串大于第二个字符串,则返回大于零的数字。

示例:

public class CompareTwoStrings {
    public static int compareTwoStrings(String stringOne, String stringTwo) {
        int lengthOfStringOne = stringOne.length();
        int lengthOfStringTwo = stringTwo.length();
        int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo);
        for (int i = 0; i < minStringLength; i++) {
            char stringOneCharValue = stringOne.charAt(i);
            char stringTwoCharValue = stringTwo.charAt(i);
            if (stringOneCharValue != stringTwoCharValue) {
                return stringOneCharValue - stringTwoCharValue;
            }
        }
        if (lengthOfStringOne != lengthOfStringTwo) {
            return lengthOfStringOne - lengthOfStringTwo;
        } else {
            return 0;
        }
    }
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo));
    }
}

预期产量:

is Guru99 equal to Guru99: 0

说明:

结果返回值为零,这意味着自定义函数按预期工作。

概要:

这款 Java 比较两个字符串的方法取决于以下因素。

  • 希望控制您的方法。在这种情况下,请创建自定义方法。
  • 您不能使用旧代码。 Java 6 及以下。
  • 具有最优性能的方法。
  • 您正在使用的数据类型。例如,从一组可变参数中匹配字符串。
  • 外包库提供的功能。例如,StringUtils 库提供了各种方法来比较字符串。