首页 > 解决方案 > Java 中的 compareTo() 函数

问题描述

我已经写了下面的代码

import java.util.*;
class compare{
    public static void main(String []args){
        String s1="java";
        String s2="javaProgramming";
        System.out.println(s1.compareTo(s2));
    }
}

此代码的输出为 -11。由于 java 中没有终止字符串的字符,“java”中的哪个字符与“javaProgramming”中的“P”进行比较?

标签: javastringstring-comparison

解决方案


'P' 字符不与第一个中的任何内容进行比较String

它只比较两个字符串的前 4 个字符,它们彼此相等。

然后它返回第一个字符串的长度减去第二个字符串的长度。

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

由于第二个String较长,并且第一个String包含在第二个中,因此返回任何负值都可以,因为较短的String应该按字典顺序排在第一位。


推荐阅读