# Java `String.compareToIgnoreCase()`方法示例

> 原文： [https://howtodoinjava.com/java/string/string-comparetoignorecase-example/](https://howtodoinjava.com/java/string/string-comparetoignorecase-example/)

[Java 字符串](https://howtodoinjava.com/java-string/)`compareToIgnoreCase()`方法按字典顺序比较两个字符串，忽略大小写。 该方法与`String.compareTo()`方法相同，但[`compareTo()`](https://howtodoinjava.com/java/string/java-string-compareto-method/)方法区分大小写。

## 1\. `String.compareToIgnoreCase()`方法

在`compareToIgnoreCase()`方法中，按照字典顺序（字典顺序）忽略大小写比较两个字符串。 第一个字符串是在其上调用方法的`String`对象本身。 第二个字符串是方法的参数。

此方法根据字符串中每个字符的 Unicode 值进行字符串比较。

## 1.1 方法返回类型

此方法的结果为整数值，其中：

1.  **正整数** – 表示按字典顺序字符串对象在变量字符串之后。
2.  **负整数** – 表示按字典顺序的字符串对象在变量字符串之前。
3.  **零** – 表示两个字符串相等。

## 1.2 方法实现

此方法使用`CaseInsensitiveComparator`类，它是**字符串**类的静态内部类。 字符串比较是通过`compare()`方法完成的。

```java
public int compare(String s1, String s2) {
    int n1 = s1.length();
    int n2 = s2.length();
    int min = Math.min(n1, n2);
    for (int i = 0; i < min; i++) {
        char c1 = s1.charAt(i);
        char c2 = s2.charAt(i);
        if (c1 != c2) {
            c1 = Character.toUpperCase(c1);
            c2 = Character.toUpperCase(c2);
            if (c1 != c2) {
                c1 = Character.toLowerCase(c1);
                c2 = Character.toLowerCase(c2);
                if (c1 != c2) {
                    // No overflow because of numeric promotion
                    return c1 - c2;
                }
            }
        }
    }
    return n1 - n2;
}

```

## 2\. Java `String.compareToIgnoreCase()`示例

Java 程序以不区分大小写的方式比较两个字符串。 请注意，`compareTo()`和`compareToIgnoreCase()`方法的行为方式相同，只是后者*不区分大小写*。

```java
public class Main 
{
    public static void main(String[] args) 
    {
        System.out.println( "apple".compareTo("BANANA") );                     //31
        System.out.println( "apple".compareToIgnoreCase("banana") );            //-1

        System.out.println( "cherry".compareTo("cherry") );                     //0
        System.out.println( "cherry".compareToIgnoreCase("CHERRY") );           //0
    }
}

```

## 3\. `compareToIgnoreCase()`与`equalsIgnoreCase()`

了解`compareToIgnoreCase()`与[`equalsIgnoreCase()`](https://howtodoinjava.com/java/string/string-equalsignorecase-method/)方法之间的主要区别。

*   `compareToIgnoreCase()`在字典上进行比较（字典顺序）。
    `equalsIgnoreCase()`检查两个字符串是否相等的字符串相等性。 虽然两者都不区分大小写。
*   `compareToIgnoreCase()`的返回类型是**整数**类型，它表示一个字符串大于，小于或等于另一个字符串。
    `equalsIgnoreCase()`返回类型是**布尔值**，这意味着两个字符串相等或不相等。

## 4\. Java `String.compareTo()`示例

Java 程序使用`String.compareTo()`方法比较字符串。

```java
public class Main 
{
    public static void main(String[] args) 
    {
        System.out.println( "apple".compareTo("banana") );  //-1 - apple comes before banana
        System.out.println( "apple".compareTo("cherry") );  //-2 - apple comes before cherry
        System.out.println( "cherry".compareTo("banana") ); //1  - cherry comes after banana
        System.out.println( "cherry".compareTo("cherry") ); //0  - Both strings are equal
    }
}

```

学习愉快！

参考：[`String` Java 文档](https://docs.oracle.com/javase/9/docs/api/java/lang/String.html)