0

我正在检查用于字符串压缩的字符串比较方法并探索反编译器中的字符串类,然后才知道基本上有四种方法

equals()
equalsIgnoreCase()
compareTo()
compareToIgnore()

现在我想知道我们使用的两种方法之间的区别 equals() 和 compareTo() ,基本上请告知为什么 string 类保留了这两种方法..

String tv = "Bravia";
        String television = "Bravia";

        // String compare example using equals
        if (tv.equals(television)) {
            System.out.println("Both tv and television contains same letters and equal by equals method of String");
        }

        // String compare example in java using compareTo
        if (tv.compareTo(television) == 0) {
            System.out.println("Both tv and television are equal using compareTo method of String");
        }

输出 :-

Both tv and television contains same letters and equal by equals method of String
Both tv and television are equal using compareTo method of String
4

5 回答 5

2

equals()返回一个booleantrue/ false。字符串 A 是否等于 B?

compareTo()返回一个整数,不仅表示字符串是否相等,而且表示哪个字符串比另一个“低”——“低”定义为自然的字母顺序。

对于两个字符串aand ba.equals(b)当一个 only ifa.compareTo(b)为真时为真0

例如:

String a = "String1";
String b = "String2";

a.compareTo(b)将返回一个负整数(不一定-1!),因为按字母顺序,字符串“String1”低于“String2”;如果要按升序对两个字符串进行排序,“String1”会排在第一位。此外,a.equals(b)将返回false,因为字符串不相等。

然而:

String a = "Example";
String b = "Example";

在这种情况下,a.compareTo(b)将返回0(因为字符串相等),并且a.equals(b)将返回true(再次,因为字符串相等)。

关于“ignoreCase”变体:

String a = "String1";
String b = "string1";

在这种情况下,a.compareToIgnoreCase(b)将返回0;那是因为,当忽略大小写时,两个字符串是相同的。此外,出于同样的原因,a.equalsIgnoreCase(b)将返回。0

于 2013-02-17T06:43:20.943 回答
1

equalsequalsIgnoreCase返回一个boolean值,说“一个等于另一个,或者不等于”

compareTocompareToIgnoreCase()返回一个三态整数, 0,-11

  • 0如果它们相等,则按顺序比较
  • 1如果 to 的参数compareTo*()在序数上大于您调用的compareTo*()对象
  • -1如果 to 的参数compareTo*()在序数上小于您调用的对象compareTo*()
于 2013-02-17T06:44:20.600 回答
0

两种方法都需要。String从Object继承equals,实现Comparable接口时需要compareTo。

于 2013-02-17T06:45:42.987 回答
0

字符串实现 Comparable 接口,然后绑定到实现 compareTo 方法。

可露营的界面

当对象包含在任何已排序的集合中时,它有助于对对象进行排序。因此,当您将字符串放入任何已排序的集合(如 TreeSet)中时,您将如何告诉 java 如何对对象进行排序。这就是 compareTo() 方法出现的地方。集合使用它来对您的对象进行排序。

String tv = "Bravia";
    String television = "Bravia";

    // String compare example using equals
    if (tv.equals(television)) {
        System.out.println("Both tv and television contains same letters and equal by equals method of String");
    }

    // String compare example in java using compareTo
    if (tv.compareTo(television) == 0) {
        System.out.println("Both tv and television are equal using compareTo method of String");
    }

    if (tv.compareTo(television) < 0){

    System.out.println("tv comes before  using compareTo method of String");
    }

if (tv.compareTo(television) > 0){

    System.out.println("tv comes after using compareTo method of String");
    }
于 2013-02-17T06:49:13.927 回答
0

compareTo():返回负整数、零或正整数,因为此对象小于、等于或大于指定对象。从比较()

equals(): equals() 方法比较两个对象是否相等,如果相等则返回 true,否则在此处返回 false source

于 2013-02-17T06:49:23.970 回答