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

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

[Java 字符串](https://howtodoinjava.com/java-string/)`compareTo()`方法按字典顺序比较两个字符串。 我们可以考虑基于字典的比较。

## 1\. 字符串比较

如果字符串`'str1'`在字典中的另一个字符串`'str2'`之前，则在字符串比较中`str2`大于`'str1'`。

> `string1 > string2` – `string1`在字典中出现`string2`之后。
> 
> `string1 < string2` - `string1`在字典中的`string2`之前。
> 
> `string1 = string2` - `string1`和`string2`相等。

## 2\. `String.compareTo()`方法

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

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

#### 2.1 方法返回类型

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

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

#### 2.2 方法语法

Java `compareTo()`方法实现。

```java
public int compareTo(String anotherString) {
    int len1 = value.length;
    int len2 = anotherString.value.length;
    int lim = Math.min(len1, len2);
    char v1[] = value;
    char v2[] = anotherString.value;

    int k = 0;
    while (k < lim) {
        char c1 = v1[k];
        char c2 = v2[k];
        if (c1 != c2) {
            return c1 - c2;
        }
        k++;
    }
    return len1 - len2;
}

```

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

了解如何在 Java 字符串上调用`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
    }
}

```

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

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

在给定的示例中，请注意前两个语句中的字符串比较，如何更改字符串的大小写可能如何更改结果和顺序。

再次注意，在将每个字符转换为 unicode 值之后，将对两个字符串进行逐字符比较。

```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
    }
}

```

学习愉快！

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